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

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

藏色散人
藏色散人nach vorne
2021-06-17 14:50:533035Durchsuche

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen