用Go构建包装C.
我想在Go中包装C代码(
LabStreamingLayer).
更新:@dragonx解释了如何在没有swig的情况下使用go build.但我仍然遇到链接器问题.构建依赖于LSL / liblsl / bin / liblsl.dylib.如何告诉go build使用该文件?我试着去构建-ldflags“-L ../liblsl/bin -l lsl”app.go但没有成功. Go documentation表示go build将使用带有.swigcxx扩展名的文件的c选项调用Swig,但是go build会抱怨目录中没有可构建的Go源文件. >平台:达尔文 以下是我为达到该错误而采取的步骤: >克隆labstreaminglayer repo. 在那次失败后,我尝试使用Swig.我运行了swig -c -go -cgo -intgosize 64 liblsl_cpp.i,它创建了一个.go文件.然后我在该目录中运行go build,但它引发了错误: ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 我不熟悉C,所以我不确定如何解决链接器问题.我知道这个C代码需要文件LSL / liblsl / bin / liblsl64.dylib.我假设那是必须链接的文件? 如何在Go中包装此C代码? 这是文件结构: LSL ├── liblsl │?? ├── bin │?? ├── distros │?? ├── examples │?? ├── external │?? ├── include │?? ├── project │?? ├── src │?? └── testing └── liblsl-Generic ?? ├── AUTOGENERATE HOWTO.txt ?? ├── examples ?? ├── liblsl.swigcxx ?? ├── liblsl_c.i ?? ├── liblsl_cpp.i ├── liblsl_wrap.cxx # created by Swig └── liblsl.go # created by Swig 解决方法
几个月前我碰到了这个问题,花了很长时间才弄明白,但是我不记得我做了什么来修复它,但我认为它是这样的:
>不要手动调用swig,它实际上使事情变得更加困难.清理swig生成的文件. package libsls-Generic >理论上你有一些其他的文件,比如app.go将使用libsls-Generic.写app.go并适当地导入libsls-Generic. 我最终想出如何开始合并swig手动生成的文件,但我现在忘记了细节.我记得在使用swig手动生成文件时,我必须在重建时手动删除某些文件.当刚刚运行时,构建步骤要简单得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- PHP+Ajax检测用户名或邮件注册时是否已经存在实例
- cocos2d移植到安卓引入第三方so文件时候编译会删
- (90) 正则表达式 (下) \/ 计算机程序的思维逻
- 项目视频讲解_基于J2EE+JBPM3.xJBPM4.3+Flex流程
- vue-router 实现导航守卫(路由卫士)的实例代码
- ruby – 获取libxml2.2.dylib的错误“文件不是必
- C#:如何以编程方式检查Web服务是否正在运行?
- ruby-on-rails – 在导轨上安全地停止em-websock
- c# – HttpClient和Unity的UnityWebRequest / WW
- C++子类父类成员函数的覆盖和隐藏实例详解