• 10620阅读
  • 6回复

vs2005编译qt写的动态库程序,为什么就是生成不了动态库的导入库(.lib) [复制链接]

上一主题 下一主题
离线snailbing
 

只看楼主 倒序阅读 楼主  发表于: 2008-08-11
— 本帖被 XChinux 从 Qt for Linux/X11 移动到本区(2010-02-08) —
如题。
dll文件能正常生成的。
在项目的属性中 链接器-》高级-》导入库。我也设置为为什么就是生成不了 .lib啊
离线XChinux

只看该作者 1楼 发表于: 2008-08-12
用.pro文件(TEMPLATE = vclib)来生成VC用的工程文件,然后用MSVC打开进行编译。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线snailbing

只看该作者 2楼 发表于: 2008-08-12
谢谢 XChinux, 问题找到了,
原因还是自己不了解vc编译器,然后一直用linux编程的经验主义在害自己。
下面的处理方法:
摘自msdn:在 32 位编译器版本中,可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 将导出指令添加到对象文件

若要导出函数,__declspec(dllexport) 关键字必须出现在调用约定关键字的左边(如果指定了关键字)。例如:

__declspec(dllexport) void __cdecl Function1(void);

若要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左边,如下所示:

class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };

生成 DLL 时,通常创建一个包含正在导出的函数原型和/或类的头文件,并将 __declspec(dllexport) 添加到头文件中的声明。

这样子导入库正常生成了,warning C4290 警告也变少了。
离线jssx
只看该作者 3楼 发表于: 2008-08-13
就是这样,用win32做也要这样。
离线zheng501gf

只看该作者 4楼 发表于: 2008-08-19
兄弟!
楼主的那种方法你试了没?
好像不能使呀?
离线zheng501gf

只看该作者 5楼 发表于: 2008-08-19
如果要是写的动态库程序里面有十几个类的话是不是都要一个一个的修改呀?
谢谢!
小弟刚接触QT!
离线zheng501gf

只看该作者 6楼 发表于: 2008-08-19
兄弟!!
能生成导入库.lib和DLL但是在运用这个动态连接库时,DLL中的类是外部符号无法解析!
请问是什么原因>?
我怎么改都不行!
快速回复
限100 字节
 
上一个 下一个