smalls的头像

smalls

一个22岁的菜鸟程序员

我的技能

PHP

JAVA

JS

GO

PYTHON

cgo使用个人总结

使用goland写代码的时候,c或者c++不能智能提示这让我感觉很不舒服,所以我写了这篇文章来谈谈cgo+静态资源库的调用

c编译器:x86_64-8.1.0-release-posix-seh-rt_v6-rev0

go:1.16

ide:goland、clion

我使用的c++,导出静态资源库需要使用rxtern c去声明.header

cgo配置

/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -ltexturedecoder -lstdc++
#include "main.h"
*/
import "C"

/**
使用c++的库,得在LDFLAGS中加入-lstdc++
如果使用dll,LDFLAGS需要加入全名除扩展名libdecoder,如果使用a、dylib、so等只需要decoder前面的lib不需要引入
*/

cmakelists.txt配置

add_library(
        # 设置库的名称
        decoder
        # 将库设置为共享库
        STATIC
        ${SOURCE_CODES}
        # 提供源文件的相对路径
        main.cpp
        main.h)

WINDOWS下面STATIC生成静态资源库,千万别使用SHARED,不然生成出来的是dll,cgo打包的时候不会放到二进制文件里面

macos引入dylib有问题,会出现加载不到dylib(等待研究)

给作者打赏一下吧

文章评论

cwz

7月

回复
大佬,能提供rss订阅吗?
留言板
评论