Heim > Artikel > Backend-Entwicklung > Wie ruft Golang C++-Programme über cgo auf?
In der folgenden Tutorial-Kolumne von golang erfahren Sie, wie Golang C++-Programme über cgo aufruft. Ich hoffe, dass es für Freunde in Not hilfreich ist!
golang ruft C++-Programme über cgo auf
Um Funktionen zu erreichen: Rufen Sie die von C++ generierte dynamische Bibliothek .so in Golang auf, um einige Funktionen zu realisieren, wie zum Beispiel: die Ergebnisse, die durch Aufrufen der von C++ aufgerufenen OpenCV-Bibliothek in Golang erhalten werden
erforderliche Dinge:
1: Dynamische C++-Bibliothek, kompiliert mit Makefile
2: C++-Datei
3: Code in Golang aufrufen
1: Makefile-Datei schreiben:
2: Die aufgerufene Header-Datei
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: Die aufgerufene CPP-Datei
#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: In Golang aufgerufen
#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) { }
Das obige ist der detaillierte Inhalt vonWie ruft Golang C++-Programme über cgo auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!