Heim > Backend-Entwicklung > Golang > Wie ruft Golang C++-Programme über cgo auf?

Wie ruft Golang C++-Programme über cgo auf?

藏色散人
Freigeben: 2021-06-17 14:50:53
nach vorne
3095 Leute haben es durchsucht

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:

r reee

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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) {
 }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage