上一主题下一主题
关键字
主题 : QT写的程序启不来
级别: 北风技术菜鸟


UID: 478713
精华: 0
发帖: 1235
威望: 5434 点
学点: 1346 点
贡献: 188 点
好评: 0 点
学币: 19 个
注册时间: 2014-07-23
最后登录: 2015-04-02
楼主  发表于: 2015-02-09 01:18||

QT写的程序启不来

JAB]kNvI  
QT写的程序,代码跟QT库都是以MT形式去编的。为什么会这样。platform/qwindows.lib的目录也放上去了 Fof_xv9  
此帖悬赏中(剩余时间:已结束)...
最佳答案: 2 学点
热心助人剩余点数: 1 学点
级别: 北风资深评论员


UID: 478710
精华: 0
发帖: 4520
威望: 6415 点
学点: 7638 点
贡献: 199 点
好评: 0 点
学币: 119 个
注册时间: 2014-07-23
最后登录: 2015-04-06
沙发(1楼)  发表于: 2015-02-09 01:22||

我记得qt默认****的是动态库版本,你是自己编译的静态版本qt库?
级别: 北风资深评论员


UID: 478710
精华: 0
发帖: 4520
威望: 6415 点
学点: 7638 点
贡献: 199 点
好评: 0 点
学币: 119 个
注册时间: 2014-07-23
最后登录: 2015-04-06
板凳(2楼)  发表于: 2015-02-09 01:22||

出现这种问题,你的Qt运行是必然不是静态编译的。有两种解决方法: ,hMd xZJd  
1.重新静态编译Qt ~"eQPTd  
2.把qt目录下的plugins/platforms目录拷贝到程序运行目录下,让程序能找到你的dll。
级别: 北风资深评论员


UID: 478710
精华: 0
发帖: 4520
威望: 6415 点
学点: 7638 点
贡献: 199 点
好评: 0 点
学币: 119 个
注册时间: 2014-07-23
最后登录: 2015-04-06
地板(3楼)  发表于: 2015-02-09 01:23||

首先, 这个windows是插件, 大概是楼主的程序需要用到一些平台依赖. H%%nB  
uzA'D~)P  
官方****的pre-complied Qt是以动态链接库****的所有的库, 包括plugins. 这时, 想用插件时(或者说发布软件时)只需要程序运行的当前目录下存在名为plugins的目录, Qt就会在这个文件夹里面自动搜寻需要的插件, 然后动态加载. 6)YNjh.{ *  
.T X& X  
但是上面的****法仅仅适用于动态库, 对于楼主自己编译的静态库, 需要有另一个****法. 静态库*.lib或者*.so脱离了编译器的话实际等于废物, 除非你自己实现解释器否则不可能在运行时动态加载(也就是说"目录放上去"不适用). 静态库引入详细的参见Qt文档, 我粗略说一下步骤, 建议仔细读文档: /pN2Jst  
\+A<s,x  
在*.pro里面加入QTPLUGIN += qwindows &fj?hYAj  
在随便一个*.cpp里加入: Q_IMPORT_PLUGIN(qwindows) G* 6<pp  
不过我试过好像在5.0+不用这段宏也能成功跑起来, 原因不明, 求高人  n(1" 6  
如果是在Visual Studio里面跑应该稍微有点不同, 但是原理是一样的, 总之*.lib需要链接进可执行文件, 而不能放在外头.