• 8620阅读
  • 6回复

【提问】linux中使用QT编程,如何使用其他的动态库? [复制链接]

上一主题 下一主题
离线aojiang
 
只看楼主 倒序阅读 楼主  发表于: 2005-12-31
我在程序中使用了别的动态库,在程序中包含了头文件,
并且在.pro文件中,修改了:
LIBS = -ladv -L/usr/local/lib
但是编译都通不过
[ 此贴被XChinux在2005-12-31 13:47重新编辑 ]
离线twosnowman
只看该作者 1楼 发表于: 2005-12-31
是不是应该修改Makefile,而不是.pro文件
离线XChinux

只看该作者 2楼 发表于: 2005-12-31
你弄错了,应该是
LIBS += -L/usr/local/lib -ladv
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线aojiang
只看该作者 3楼 发表于: 2005-12-31
我是写成
LIBS += -ladv -L/usr/local/lib
可是不行啊,并且是参考QT官方文档的,这个顺序

难道一定要
LIBS += -L/usr/local/lib -ladv吗?
离线XChinux

只看该作者 4楼 发表于: 2005-12-31
把错误消息贴出来看看
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线aojiang
只看该作者 5楼 发表于: 2005-12-31
就是找不到说所引用的库中的函数没有定义阿,
不过我引用的库是c语言写的,不知道有没有什么问题
离线renstone

只看该作者 6楼 发表于: 2006-01-01
c++函数名字的产生和c函数名字的产生是不一样的.
为了实现静态的多态--重载,c++的函数名实际上是由函数名和参数类型列表通过某种方式组合而来的.而c语言采用的仅仅可能是函数名前加下划线.

当c语言调用c++库或c++语言调用c库时,库要导出的函数的头文件应当写成
  1. #ifndef LIB_H
  2. #define LIB_H
  3. #ifdef __cplusplus
  4. extern "C"
  5. {
  6. #endif //__cplusplus
  7. 你的库要导出的函数的声明.
  8. #ifdef __cplusplus
  9. }
  10. #endif //__cplusplus
  11. #endif //LIB_H

通过上面的声明,当c程序调用c++库时,编译c++库时,编译器会产生c形式的函数名

当c++程序使用c库时,告诉c++编译器,这些函数使用的是c形式的函数名。
快速回复
限100 字节
 
上一个 下一个