我有一个动态库lib_funcs.so
,用C语言编写当我把它链接到一个C项目(代码.so库: :Blocks)一切正常,但是当我将它链接到一个C++项目并使用这个库的函数Code :: Blocks时出现错误:undefined reference to 'functions name'
。使用C *在C .so库++项目(Ubuntu的)使用C *在C项目(Ubuntu的)
回答
您需要定义原型为extern "C" { prototypes }
,防止名字改编。
,我需要定义原型? –
在你的头文件中。在定义任何原型之前,您可以在头文件中将语句添加为'#ifdef __cplusplus extern C {#endif',并在最后添加另一个为'#ifdef __cplusplus}#endif'。 – unxnut
当包括声明的功能的标题,换行列入一个extern "C"
块。
extern "C" {
#include "funcs.h"
}
C++使用名称重整支持函数重载(其中重命名功能,包括有关类型及其参数,以及信息),而C只是使用你给函数的名称。所以你的C++代码正在寻找他们的名字下的函数,而不是他们的真名。如果围绕函数的声明使用extern "C"
,那会导致C++编译器使用C风格的命名约定,而不是C++。
我试过这个,但它没有帮助 –
@PetrLivic我第一次弄错了,它应该是'extern“C”'带引号。尝试一下;如果它不起作用,你能否粘贴一个不起作用的简短完整例子,以及你在问题中遇到的确切错误? –
你的意思是 extern“C”void ....; extern“C”void 2 ...; –
- 1. C++项目使用C#
- 2. ubuntu的12.04.3:在目标c
- 3. 编译Linux上的Objective-C项目(Ubuntu)
- 4. 在CUDA C项目中使用C++
- 5. 在C++项目中使用c DLL
- 6. 在C++项目中使用C#GUI
- 7. 如何在Ubuntu上使用Objective-C ParseKit编译项目?
- 8. 在Ubuntu下使用JNI在IntelliJ中包含native C++ .so库
- 9. 在c#中使用vb.net类库项目
- 10. 在Objective-C项目中使用Swift库
- 11. 在F#项目中使用C#库?
- 12. 使用rosmake(ubuntu 16.04上的动态)构建C++项目
- 13. 不能在C#项目中使用C++/CLI项目类别
- 14. 无法在Eclipse中运行项目C/C++ OpenCV 2.4.5 Ubuntu 12.10
- 15. Objective C使用C++ POSIX类的项目
- 16. C#项目使用的C++ DLL调试
- 17. 如何在我的Objective-C iOS项目中使用C库?
- 18. 在VS C++项目中使用GNU C++构建的库
- 19. 使C项目代替C++
- 20. C#库项目在多个项目中使用
- 21. 在ubuntu中将jpeg库添加到C++ Qt Creator项目中?
- 22. 在MVC3项目中使用OutputCache的C#
- 23. 在项目中使用C#中的usercontrol
- 24. 在我的C++项目中使用tcmalloc
- 25. 不使用Makefiles构建C/C++项目
- 26. 从托管C++项目使用C#类
- 27. C#在项目
- 28. 在C#项目
- 29. C++/ubuntu约.a和.so
- 30. 使用Xcode项目加载C共享库目标C
为什么你重新发布**完全相同的问题!** – 2013-06-18 22:47:56
因为你没有给我答案 –
** Wat?** [你认为这是什么?](http:// stackoverflow.com/questions/17179797/ubuntuusing-c-so-library-in-c-project#comment24877125_17179797)[和这?](http://stackoverflow.com/questions/17179797/ubuntuusing-c-so-library-在-C-项目#comment24877138_17179797)这个呢?(http://stackoverflow.com/questions/17179797/ubuntuusing-c-so-library-in-c-project#comment24877182_17179797) – 2013-06-19 15:59:36