• 7878阅读
  • 4回复

如何才能在QT上使用VC++产生的.lib [复制链接]

上一主题 下一主题
离线osiers
 
只看楼主 正序阅读 楼主  发表于: 2009-02-26
我有一个用VC++写的SDK Demo程序
我想将他转换到QT上
其中里面的.lib加上去后
Compliter后  一直有秀 undefined reference to ‘_imp___Z9PXM_Closev’
我用到他的function是PXM_Close
上网查的结果好像是 build 用到vc compliter路径导致
请问一下要怎么解决这问题

谢谢
离线huzhiwen28

只看该作者 4楼 发表于: 2009-08-05
这个,我好像也遇到类似的问题了

原因是VC的lib库格式不能被QT认识

我的解决办法如下

1)函数原型声明头文件改写

extern "C"
{
函数声明;
}

要被extern "C" 包含,否则,认出的函数就会出现主贴中的标识

2)根据DLL库重新生成def文件
使用工具pexports.exe,可以到网上查一下

看看生成的def文件,中函数的原型

3)根据def文件利用mingw的dlltool重新生成lib文件


4)将lib文件和头文件更新到工程中

就OK了

对了,如果遇到__stdcall函数不能调用的问题,注意观察DLL引出的函数的原型是什么,如果原型不是function@n  ,n表示参数的长度数字,那么你在第2步生成的def文件中得加上别名,例如

function
function@n = function

这样才可以真正的编译和运行通过


具体的大家可以google一下,我只是给个线索。
http://blog.sina.com.cn/tonyhuzhiwen
https://github.com/huzhiwen28/
专注于工业嵌入设备开发
离线osiers
只看该作者 3楼 发表于: 2009-03-02
谢谢大家回复
我在网络上找也是类似说法
我是使用Eclpics开发的
我看他是有VC的编译器
可是我不管怎么设定就是不行
请问一下我该怎么设定才可使用VC的编译器

谢谢
只看该作者 2楼 发表于: 2009-02-28
其实vc6.0的库是可以用工具转的,但是到了6.0之后,格式换了,mingw就不能用了
[ 此帖被都市无名者在2009-02-28 12:13重新编辑 ]
离线bjay
只看该作者 1楼 发表于: 2009-02-28
想用.lib库,你的编译器必须是VC系列的,要用mingw的那就没戏了
快速回复
限100 字节
 
上一个 下一个