use*_*003 0 c c++ gcc g++
我有几个关于混合代码的问题:
一个基于c的完整项目,如果我想使用c ++库,那么我用纯c代码创建一个包装器,然后构建该共享库,我是否必须更改为g ++而不是gcc编译器?
如果包装器与库一起编译为静态库怎么办?
Jon*_*art 6
我很想知道您使用的库只有C++版本,而不是纯C接口.
无论如何,既然你要调用C++代码,你的包装器将被认为是C++,需要用g ++编译.这与名称修改有关,你需要能够调用c ++库公开的那些函数.你可以看看他们readelf -s.
readelf -s
但是,您的包装器公开的函数需要进行标记,extern "C"以便它们的名称不会被破坏.然后,您就可以从纯C应用程序中调用它们.
extern "C"
静态与共享库在这里并不重要.这只是生成正确符号的问题,因此可以进行链接.
归档时间:
14 年,1 月 前
查看次数:
1164 次
最近记录:
11 年,11 月 前