• 2879阅读
  • 0回复

QT4.8.3采用静态qt编译,连接时报错无法解析的外部符号 QString::QString(char const *) [复制链接]

上一主题 下一主题
离线cyberpunker
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-24

一个小GUI, 用的QT5.3.2 64位 静态库(自己编译的),在windows上OK,

现在要降为用QT4

现在把QT4.8.6 编译成64位静态库,参照下面的方法:
http://www.cnblogs.com/elect-fans/archive/2012/03/29/2422816.html
http://blog.csdn.net/chenkent888/article/details/17153071

编译OK,里边的例子也可以运行。我还把QT 4自带的例子单拿出来,使用我自己的方法编译了一下,也OK,可以运行。
没有使用QT的那个VS 插件

然后把我自己的GUI的 moc等,头文件,库文件全部换为 编译出来的QT4的,
编译OK,链接出错,其中最多的是这个错误
http://s.yanghao.org/program/viewdetail.php?i=415767

使用dumpbin.exe  walk_dependency 导出QT5 lib , QT4 lib ,QT4 dll(官方下载的 ,32位库)中的函数,
发现一个现象,有些函数在 lib库中不存在 ,但在 dll 中存在,
比如: QString::SetNum( float , char ,int ) , 在 QT4 dll中存在,但在QT4 lib中不存在, 但是两个库都有 QString::SetNum( double, char ,int ) , 必须把 float强制转换成 double,使用 QT4 lib时 才能链接通过。
但是使用QT5 lib不需要这样,QT5 lib也只有 QString::SetNum( double, char ,int ) ,但是不用强制转换也可以通过 。

对于 QString::QString(char const *) 的问题,实际上在我的代码中,并没有使用QString, 应该是QT本身使用了 QString 。

奇怪的问题!





快速回复
限100 字节
 
上一个 下一个