当前位置:  技术问答>linux和unix

静态库编成动态库问题,大家帮忙

    来源: 互联网  发布时间:2016-05-30

    本文导语:  小弟目前做一个东西,但是对方只给了一个.a和.h ,那个.a和.h使用c++写的,但是我要在我的c代码里调用.h中的函数,我试着把那个.h中的函数在一个新文件中封成c的函数,然后编译链接成.so。但是在我的程序里调那...

小弟目前做一个东西,但是对方只给了一个.a和.h ,那个.a和.h使用c++写的,但是我要在我的c代码里调用.h中的函数,我试着把那个.h中的函数在一个新文件中封成c的函数,然后编译链接成.so。但是在我的程序里调那个函数不起作用,请问这个问题要怎么解决?


目前拿不到那个.a的源代码所以只能想办法在c代码里调用那个c++的静态库里的函数,大家帮忙了!

|
.h文件加上
#ifdef __cplusplus
extern "C"    {
#endif
....
...
#ifdef __cplusplus
}
#endif 

然后自己的C文件中包含.h文件
编译时,加上.a文件
如果你的.a文件生成的平台环境和你目前使用相同的话,可以顺利编译


|
貌似调用动态库还是静态库都是同一回事。问题是:直接写个c程序,调用.a成功与否?

|
最好的解決辦法是將你的.c文件改成.cpp的...

這個問題以前C/C++版也遇到過,你可以參看這個:

http://topic.csdn.net/u/20071102/00/a2c8cef5-e96e-4ec9-adc9-c26e089379e9.html

|
http://c.chinaitlab.com/c/skill/200902/776470.html
用#extern   "C"处理吧   

|


这个不行吧,lz没有.a的源代码,修改不了任何东西!我觉得3楼的方法可以!

不准确的说,C++是C的升级版,一般对升级来说,向下兼容(C++中调用C)可以,用extern "C", 但是很难支持向上兼容(C中调用C++);

GOOD LUCK!!

|

用全局函数封装这些C++接口,然后把.a解开成.o后一起编译成.so。应该可以吧


|
综上,楼主的问题是C想要调用C++函数,而C++函数又不能增加extern "C",C代码页不能修改为C++的, 和静态还是动态库好像没什么关系。看起来是比较头疼。

如果光在.h文件里面加extern "C",有没有用? 又或者在原有C++函数外面再封装一层C++函数,对这些封装函数加上extern "C",不知有没有效?

|
试试在一个.cpp文件中写些用extern "C"修饰的C++函数来调用那个.a中的函数,把这个.cpp文件编译成一个.so,把这些函数声明写在一个.h文件中,用C程序包含这个.h文件后应该可以直接调用这个.so中的函数。祝你好运!

|
extern "C"

跟楼主想要的效果是正好相反...

楼主想要的是一种 extern "C++",此词为本人自造...

    
 
 

您可能感兴趣的文章:

  • IT科技资讯 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • linux中静态链接库调用了另一个静态链接库
  • 如何 用一个静态库 生成 另一个静态库
  • 请教:(static)静态变量和静态方法是什么意思?
  • 有把两个静态库.a合成一个静态库的简单方法吗
  • linux 生成静态库的时候怎么连接别的静态库
  • 静态博客 静态blog
  • 静态库动态库同时存在时,如何指定使用静态库
  • C# 静态方法与非静态方法的区别分析
  • 如何在一个静态链接库中链接另一个静态链接库?
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • PHP static局部静态变量和全局静态变量总结
  • c#静态方法和非静态方法详细介绍
  • 在静态上下文中不能引用非静态方法test(),天啊,为什么我的main()不能调用任何其它函数?
  • 静态函数,静态变量
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • c++静态局部变量和静态函数示例
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • 关于C++静态成员函数访问非静态成员变量的问题
  • 急求静态库引用静态库,该如何编译链接!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3