c++函数不明确_构建和使用Go软件包作为C库
发布日期:2021-06-24 13:09:06
浏览次数:2
分类:技术文章
本文共 1151 字,大约阅读时间需要 3 分钟。
CGO是Go的官方内置功能,它使创建引用C库的Go包成为可能。不仅如此,它也可以在相反的方向上实现。它使您可以从Go包中创建C库,以便C代码可以引用令人赞叹的Go。
将Go程序包构建为C共享库(或共享对象)
每个Go main软件包都可以构建为C共享库。
$ go build -go build -buildmode c-shared -o .so
执行上述命令会将目标Go main软件包及其所有依赖项构建为单个C共享库,可以将其分发,安装和链接到任何C应用程序,以及可以引用C共享库的其他语言(C ++,Python,Javascript等) 。
注意:输出C共享库应以标准格式命名lib*.so。
生成C标头并将Go函数导出为C函数
将Go main程序包构建为C共享库也不会生成C头文件,也不会将任何Go函数公开为C符号。开发人员必须明确指出要公开哪些Go函数。
要将Go函数导出为C符号:
- 在Go函数的顶部添加注释//export FuncName。
- 包含函数的Go文件代码必须为import "C"。
- 该功能必须属于main包。
- 函数签名既不能具有Go结构,也不能具有Go接口,也不能具有Go数组或可变参数。
package main import "C"import ( "math/rand" "time")//export cgoCurrentMillisfunc cgoCurrentMillis() C.long { return C.long(time.Now().Unix()) }//export cgoSeedfunc cgoSeed(m C.long) { rand.Seed(int64(m))}//export cgoRandomfunc cgoRandom(m C.int) C.int { return C.int(rand.Intn(int(m))) }
在Go main包之上构建将生成一个C头文件.h以及一个C共享库.so。
// Other stuff. extern long int cgoCurrentMillis(); extern void cgoSeed(long int p0); extern int cgoRandom(int p0);
cgoCurrentMilli,cgoSeed并且cgoRandom在中也显示为C符号.so。现在,每个C应用程序都可以包含头文件并使用公开的C符号。
#include #include int main() { cgoSeed(cgoCurrentMilli()); printf("Hello World from C!"); printf("cgoRandom() -> %d
转载地址:https://blog.csdn.net/weixin_33001305/article/details/112099827 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月10日 20时48分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【修复版本】SAP PP模块生产版本主数据维护
2019-04-28
资产相关Table
2019-04-28
采购合同新增接口
2019-04-28
MRP元素的缩写
2019-04-28
SAP DIMP行业包
2019-04-28
一封邮件, 就能看出你是不是足够专业
2019-04-28
ABAP 字符串操作
2019-04-28
给采购凭证分配合作伙伴方案
2019-04-28
【常识】高尔夫计分规则
2019-04-28
高尔夫球专业术语
2019-04-28
SAP and ABAP Memory总结
2019-04-28
程序间数据共享与传递(1):EXPORT/IMPORT、SAP/ABAP Memory
2019-04-28
程序间数据共享与传递(2):EXPORT/IMPORT、SAP/ABAP Memory
2019-04-28
程序间数据共享与传递(3):EXPORT/IMPORT、SAP/ABAP Memory
2019-04-28
ABAP如何在调试查看EXPORT/IMPORT 内存数据
2019-04-28
LTRIM、RTRIM和TRIM在ORACLE中的用法:
2019-04-28
oracle常用的时间格式转换
2019-04-28
使用优化器提示(Optimizer Hints)
2019-04-28
销售抬头文本配置方法
2019-04-28
销售文本程序的分配
2019-04-28