>  기사  >  백엔드 개발  >  golang은 cgo를 통해 C++ 프로그램을 어떻게 호출합니까?

golang은 cgo를 통해 C++ 프로그램을 어떻게 호출합니까?

藏色散人
藏色散人앞으로
2021-06-17 14:50:533016검색

다음 튜토리얼 칼럼인 golang에서는 golang이 cgo를 통해 C++ 프로그램을 호출하는 방법을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

golang은 cgo

를 통해 C++ 프로그램을 호출하여 기능을 달성합니다. golang에서 C++에 의해 생성된 동적 라이브러리 .so를 호출하여 다음과 같은 일부 기능을 실현합니다. golang

에서 C++에 의해 호출된 opencv 라이브러리를 호출하여 얻은 결과 필수 사항:

1: Makefile을 사용하여 컴파일된 C++ 동적 라이브러리

2: C++ 파일

3: golang에서 코드 호출

1: Makefile 파일 쓰기:

rrre 에

2: 호출된 헤더 파일

HASH_LIBS += -L./lib -L./ -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_img_hash
 TEST_LIBS += $(HASH_LIBS) -lCImageUtil -lboost_filesystem -lopencv_videoio
 INCS += -I./include -I ./
 CXXFLAGS += $(INCS) -fPIC  -Wall -O2 -std=c++11
 TARGET   = -shared -o lib/libCImageUtil.so
 COMM_SRCS+= opencv_hash.cc scale_image.cc algo.cc md5.cc
 #COMM_OBJS=$(COMM_SRCS:.cc=.o)
 main_test : main-test.cc
     $(CXX) $(CXXFLAGS) $< -o $@ $(TEST_LIBS) 
 CImageUtil:
     $(CXX) $(CXXFLAGS) $(COMM_SRCS) -o $@ $(HASH_LIBS) $(TARGET)
 all: CImageUtil main_test

3: 호출된 cpp 파일

#pragma once
#ifdef __cplusplus extern "C" { #endif
void calc_phash(const char *str, int len, char* test, int* flag);
int scale_image(const char* src, int srclen, char** dist, int* distlen, char* error);
#ifdef __cplusplus   } #endif

4: golang에서 호출

#include "CImageUtil.h"
int scale_image(const char* src, int srclen, char** dist, int* distlen, char* err) {     return 0; }
void calc_phash(const char *img, int len, char* phash_result, int* flag) {
 }

위 내용은 golang은 cgo를 통해 C++ 프로그램을 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제