다음 튜토리얼 칼럼인 golang에서는 golang이 cgo를 통해 C++ 프로그램을 호출하는 방법을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
golang은 cgo
를 통해 C++ 프로그램을 호출하여 기능을 달성합니다. golang에서 C++에 의해 생성된 동적 라이브러리 .so를 호출하여 다음과 같은 일부 기능을 실현합니다. golang
에서 C++에 의해 호출된 opencv 라이브러리를 호출하여 얻은 결과 필수 사항:
1: Makefile을 사용하여 컴파일된 C++ 동적 라이브러리
2: C++ 파일
3: golang에서 코드 호출
1: Makefile 파일 쓰기:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!