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

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

藏色散人
풀어 주다: 2021-06-17 14:50:53
앞으로
3096명이 탐색했습니다.

다음 튜토리얼 칼럼인 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿