golang 如何带入C++的vector等std?

garyjywu · 2021-11-25 16:49:24 · 1511 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-11-25 16:49:24 的主题,其中的信息可能已经有所发展或是发生改变。

又遇到一个问题: 在include 第三方的.h的时候。 test.h":

#include<vector>

test.go":

//#include "test.h"
import "C"

fatal error: vector: No such file or directory build时会报错提示找不到vector,google了一天,没找到合适的解决方式,想来请教下是否有方式可以直接get到c++ 的vector这些lib?

先感谢各位先进~


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1511 次点击  
加入收藏 微博
9 回复  |  直到 2021-11-26 16:47:54
focusonline
focusonline · #1 · 3年之前

不懂你为啥非要引用C++的东西, 难道go没有自己的替代品和解决方案么? 如果非要用那为啥要用go写直接用C++不就行了.

garyjywu
garyjywu · #2 · 3年之前
focusonlinefocusonline #1 回复

不懂你为啥非要引用C++的东西, 难道go没有自己的替代品和解决方案么? 如果非要用那为啥要用go写直接用C++不就行了.

如果可以直接用C++的话 我也想直接用,公司交派的任务 只能硬试看看了,另外替代品的话,go目前还真没有,因为需要调用Qualcomm/MTK/Samsung的library,至少目前qualcomm只直接提供C/C++编译好的dll,所以并非我不想用C++ 😂

18393910396
18393910396 · #3 · 3年之前
garyjywugaryjywu #2 回复

#1楼 @focusonline 如果可以直接用C++的话 我也想直接用,公司交派的任务 只能硬试看看了,另外替代品的话,go目前还真没有,因为需要调用Qualcomm/MTK/Samsung的library,至少目前qualcomm只直接提供C/C++编译好的dll,所以并非我不想用C++ 😂

推荐你试试swig。http://www.swig.org/

18393910396
18393910396 · #4 · 3年之前
garyjywugaryjywu #2 回复

#1楼 @focusonline 如果可以直接用C++的话 我也想直接用,公司交派的任务 只能硬试看看了,另外替代品的话,go目前还真没有,因为需要调用Qualcomm/MTK/Samsung的library,至少目前qualcomm只直接提供C/C++编译好的dll,所以并非我不想用C++ 😂

直接让你搞cpp,如果没有人带,或者学习机会,直接跑路吧,全是坑。哈哈哈

jan-bar
jan-bar · #5 · 3年之前
garyjywugaryjywu #2 回复

#1楼 @focusonline 如果可以直接用C++的话 我也想直接用,公司交派的任务 只能硬试看看了,另外替代品的话,go目前还真没有,因为需要调用Qualcomm/MTK/Samsung的library,至少目前qualcomm只直接提供C/C++编译好的dll,所以并非我不想用C++ 😂

都dll了,那还用啥C++。go直接就能搞dll啊。。

focusonline
focusonline · #6 · 3年之前
garyjywugaryjywu #2 回复

#1楼 @focusonline 如果可以直接用C++的话 我也想直接用,公司交派的任务 只能硬试看看了,另外替代品的话,go目前还真没有,因为需要调用Qualcomm/MTK/Samsung的library,至少目前qualcomm只直接提供C/C++编译好的dll,所以并非我不想用C++ 😂

你似乎跑偏了. 用三方提供的C++编译出来的DLL你并不需要在go中引用C++的std库, 更不需要vector这种完全C++的东西. 因为你和DLL函数交互过程中, 传给它的参数和获取的返回值不可能是一个vector.

garyjywu
garyjywu · #7 · 3年之前
focusonlinefocusonline #6 回复

#2楼 @garyjywu 你似乎跑偏了. 用三方提供的C++编译出来的DLL你并不需要在go中引用C++的std库, 更不需要vector这种完全C++的东西. 因为你和DLL函数交互过程中, 传给它的参数和获取的返回值不可能是一个vector.

应该是这样说,在include 第三方的header file(里面定义了相关structure)的时候, 它里面include了 vector这种 C++的库,所以才想询问,不然的话就要额外将所有的定义都拉到go lang里面,并且要重写所有的struct变数定义。

focusonline
focusonline · #8 · 3年之前
garyjywugaryjywu #7 回复

#6楼 @focusonline 应该是这样说,在include 第三方的header file(里面定义了相关structure)的时候, 它里面include了 vector这种 C++的库,所以才想询问,不然的话就要额外将所有的定义都拉到go lang里面,并且要重写所有的struct变数定义。

我不清楚你这个header文件是哪里来的, 如果是lib文件生成的那么只能给C++使用, 所以你在定义中看到vector这种有语言特性的东西, 我觉得你不能直接使用这个header文件, 或者可以写个中间DLL做个转换变成go能识别的基本数据类型.

stirlingx
stirlingx · #9 · 3年之前

何必那么麻烦, 用gostl就可以了 https://github.com/liyue201/gostl

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传