当前在线人数16004
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
求教在linux调用C++动态库问题
[版面:葵花宝典][首篇作者:minquan] , 2021年03月27日07:52:00 ,961次阅读,18次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: minquan (三民主义), 信区: Programming
标  题: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 07:52:00 2021, 美东)

国内某交易所提供了量化接口,C++的

主要是一些头文件,在linux里有两个so

我发现两个头文件和两个so的主文件名是对应的,除去.h和.so后缀

只不过是 小写(头文件的主文件名)+_se = so动态库的主文件名

这是不是错的?根本不能调用?我看到有人说是必须得前面加lib才能调用

然而我翻遍了h文件的#注释,没有提到过se啊?

那么是不是也得把_se删掉才能用?
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
gogogo2
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: gogogo2 (googlebot), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 10:12:46 2021, 美东)

windows下也会有这种情况,dll里的函数名也有前缀,

要自己判断自己加前缀,
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 66.]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 10:19:26 2021, 美东)

谢谢,这个问题很复杂,牵扯到接口改变的问题。

我还是得去问下国内同行。

【 在 gogogo2 (googlebot) 的大作中提到: 】
: windows下也会有这种情况,dll里的函数名也有前缀,
: 要自己判断自己加前缀,



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
cimu
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: cimu (此木), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 15:26:07 2021, 美东)

.so 文件名应该随便改阿, 你要 compile against 才行。 when you compile you
need to the .so file, you can change it to what ever you want.


you can dynamically load the .so file and then call the function there too,
but you do not have to do this way.
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:1700:1157:]

 
bouncingball
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: bouncingball (bouncingball), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 17:53:13 2021, 美东)

Linux需要在调用前export目录直到存放.so的那级目录,才能连接上动态库。实在不行
就让国内的给个静态库,用静态库调用不会有问题。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

 
minquan2
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: minquan2 (三民主义 五权宪法), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 22:37:50 2021, 美东)

问题在于,头文件里面,一没有写so名,二没有写路径

如果go只include了头文件,而没有写so,是否就没有办法调用?

我看go的LDFLAG行写了-l,应该就是调用动态库

而这个动态库,默认是从/usr/lib/里找的?

即默认是Linux安装好的?

【 在 cimu (此木) 的大作中提到: 】
: .so 文件名应该随便改阿, 你要 compile against 才行。 when you compile you
: need to the .so file, you can change it to what ever you want.
: you can dynamically load the .so file and then call the function there too
,
: but you do not have to do this way.



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: unknown,65.]

 
pickvalue
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: pickvalue (pickvalue), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Sat Mar 27 23:19:57 2021, 美东)

应该可以 gcc main.cpp /your/path/xyzfoo.so

【 在 minquan2 (三民主义 五权宪法) 的大作中提到: 】
: 问题在于,头文件里面,一没有写so名,二没有写路径
: 如果go只include了头文件,而没有写so,是否就没有办法调用?
: 我看go的LDFLAG行写了-l,应该就是调用动态库
: 而这个动态库,默认是从/usr/lib/里找的?
: 即默认是Linux安装好的?
: ,




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 107.]

 
omgpop
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: omgpop (See my signature), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Mar 29 10:04:06 2021, 美东)

作为一个叫兽,这种abc问题你不能读一下thefxxkingdoc自己解决吗?这都要上板面问
丢人不?

【 在 minquan (三民主义) 的大作中提到: 】
: 国内某交易所提供了量化接口,C++的
: 主要是一些头文件,在linux里有两个so
: 我发现两个头文件和两个so的主文件名是对应的,除去.h和.so后缀
: 只不过是 小写(头文件的主文件名)+_se = so动态库的主文件名
: 这是不是错的?根本不能调用?我看到有人说是必须得前面加lib才能调用
: 然而我翻遍了h文件的#注释,没有提到过se啊?
: 那么是不是也得把_se删掉才能用?




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2600:6c52:6000:]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Mar 29 10:19:37 2021, 美东)

我不是教授。这种事本来应该是外包方给我搞定的。

【 在 omgpop (See my signature) 的大作中提到: 】
: 作为一个叫兽,这种abc问题你不能读一下thefxxkingdoc自己解决吗?这都要上板面问
: 丢人不?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Mar 29 10:20:22 2021, 美东)

谢谢。不过我用cmake

【 在 pickvalue (pickvalue) 的大作中提到: 】
: 应该可以 gcc main.cpp /your/path/xyzfoo.so



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
pptwo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: pptwo (pp), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Mar 29 15:22:00 2021, 美东)

带_se的接口后面坑多着呢,你的外包有没有告诉你要把程序放到root下面跑?

【 在 minquan (三民主义) 的大作中提到: 】
: 我不是教授。这种事本来应该是外包方给我搞定的。



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Mar 29 23:28:42 2021, 美东)

带se是交易所后来搞的,说是什么穿透式监管。
正因为程序做的时候还不带se,所以现在我自己在处理新版本的se的接口。
_se是必须放在root下跑的意思吗?
这个文件名自带属性?

【 在 pptwo (pp) 的大作中提到: 】
: 带_se的接口后面坑多着呢,你的外包有没有告诉你要把程序放到root下面跑?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
mitbbs2715
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: mitbbs2715 (好吃不懒做), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Mon Apr  5 14:20:26 2021, 美东)

这问题好奇特, 你是不是没学过C/C++的编译
头文件和库文件的名字不需要对应
头文件不过是告诉你接口, linker会自动按照header函数的signature(也就是 函数名,
arg的个数和类型)去找库里面找, 你只要保证你给它的所有库文件合并以后包含唯一
一个该signature即可(也不能超过一个), 只不过C++有name mangling 你如果要连接非
C++代码会比较麻烦. 如果是这样你需要让他们重新编译一下, 或者你自己重新包一下.
不过我建议还是用C++比较好, C重用性太差了

【 在 minquan (三民主义) 的大作中提到: 】
: 国内某交易所提供了量化接口,C++的
: 主要是一些头文件,在linux里有两个so
: 我发现两个头文件和两个so的主文件名是对应的,除去.h和.so后缀
: 只不过是 小写(头文件的主文件名)+_se = so动态库的主文件名
: 这是不是错的?根本不能调用?我看到有人说是必须得前面加lib才能调用
: 然而我翻遍了h文件的#注释,没有提到过se啊?
: 那么是不是也得把_se删掉才能用?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2a0b:f4c1:2::25]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Wed Apr  7 02:39:15 2021, 美东)

没学过。而且现在的情况是C++做动态库,go去调。
如果go的调用或者C++动态库哪里做的不好,就崩溃,然后也找不到原因。
而且C++的动态库又比C++的主程序阉割掉很多语法,例如printf就用不了,只能用
stout。

往往改一行之后就得重新全部编译一遍,再测。极烦人。

【 在 mitbbs2715 (好吃不懒做) 的大作中提到: 】
: 这问题好奇特, 你是不是没学过C/C++的编译
: 头文件和库文件的名字不需要对应
: 头文件不过是告诉你接口, linker会自动按照header函数的signature(也就是 函数
名,
:  arg的个数和类型)去找库里面找, 你只要保证你给它的所有库文件合并以后包含唯一
: 一个该signature即可(也不能超过一个), 只不过C++有name mangling 你如果要连接非
: C++代码会比较麻烦. 如果是这样你需要让他们重新编译一下, 或者你自己重新包一
下.
:  不过我建议还是用C++比较好, C重用性太差了



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 86.]

 
Caravel
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: Caravel (克拉维尔), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Wed Apr  7 04:31:50 2021, 美东)

无论哪种情况,相信文件名也都不会是个大问题,改下Makefile就行了

【 在 minquan (三民主义) 的大作中提到: 】
: 没学过。而且现在的情况是C++做动态库,go去调。
: 如果go的调用或者C++动态库哪里做的不好,就崩溃,然后也找不到原因。
: 而且C++的动态库又比C++的主程序阉割掉很多语法,例如printf就用不了,只能用
: stout。
: 往往改一行之后就得重新全部编译一遍,再测。极烦人。
: 名,
: 下.



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
async
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: async (async), 信区: Programming
标  题: Re: 求教在linux调用C++动态库问题
发信站: BBS 未名空间站 (Wed Apr  7 18:10:19 2021, 美东)

ctp穿透式这是两年前的事儿吧,你咋还在搞这个,github上很多例子参考一下照着做
就行
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 108.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 17 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 求教在linux调用C  动态库问题
发信站: BBS 未名空间站 (Wed Apr  7 20:48:18 2021, 美东)

要不你用cpp写个简单的测试程序调用Cpp的库,看有没问题。如果没有,那你就去查go
调用Cpp 的手册。如果有同样的问题,你就去找那个Cpp库的信息。

总之,测试代码可以用来实证和分析问题。


【 在 minquan(三民主义) 的大作中提到: 】
<br>: 没学过。而且现在的情况是C  做动态库,go去调。
<br>: 如果go的调用或者C  动态库哪里做的不好,就崩溃,然后也找不到原因。
<br>: 而且C  的动态库又比C  的主程序阉割掉很多语法,例如printf就用不了,只能用
<br>: stout。
<br>: 往往改一行之后就得重新全部编译一遍,再测。极烦人。
<br>: 名,
<br>: 下.
<br>
--
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 72.]

 
minquan
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 18 ]

发信人: minquan (三民主义), 信区: Programming
标  题: Re: 求教在linux调用C  动态库问题
发信站: BBS 未名空间站 (Wed Apr  7 22:10:12 2021, 美东)

谢谢,我这是赶鸭子上架。库弄完了,就先不搞C++了。别的方面还一堆破事。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 要不你用cpp写个简单的测试程序调用Cpp的库,看有没问题。如果没有,那你就去查
go
:  调用Cpp 的手册。如果有同样的问题,你就去找那个Cpp库的信息。
: 总之,测试代码可以用来实证和分析问题。
: <br>: 没学过。而且现在的情况是C  做动态库,go去调。
: <br>: 如果go的调用或者C  动态库哪里做的不好,就崩溃,然后也找不到原因。
: <br>: 而且C  的动态库又比C  的主程序阉割掉很多语法,例如printf就用不了,只
能用
: <br>: stout。
: <br>: 往往改一行之后就得重新全部编译一遍,再测。极烦人。
: <br>: 名,
: <br>: 下.
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: unknown,65.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996