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