go調用C++靜態庫


測試項目目錄

./
├── cgo_test
├── sum.cpp
├── sum.h
└── test.go

c++代碼 sum.cpp

#include <iostream>

extern "C" {
    #include "sum.h"
}

int Sum(int a,int b) {
    int sum = a + b;
     return sum;
}

cgo不能直接調用c++,將模塊的接口函數在sum.h頭文件進行定義,在sum.cpp中使用C++來重新實現這個C函數。

sum.h

int Sum(int a,int b);

c++生成靜態庫文件

g++ -c sum.cpp
ar -crv libsum.a sum.o

生產靜態庫后的目錄

./
├── cgo_test
├── libsum.a
├── sum.cpp
├── sum.h
├── sum.o
└── test.go

go代碼

package main

/*
#include <stdio.h>
#include <stdlib.h>
#include "sum.h"

#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -lsum
*/
import "C"
import "fmt"

func main() {
	ret := C.Sum(2,3)
	fmt.Println(ret)
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM