• 7981阅读
  • 7回复

Qt5.2静态库编译dll插件问题。 [复制链接]

上一主题 下一主题
离线yangkun52131
 

只看楼主 倒序阅读 楼主  发表于: 2014-01-08
我利用Qt5.2静态版本编译我之前的插件,都报错误

       E:/Qt/Qt5.2Static/lib\libqtmain.a(qtmain_win.o):qtmain_win.cpp:(.text+0x161): undefined reference to `qMain(int, char**)' collect2.exe: error: ld returned 1 exit status
加上此选项 TEMPLATE = lib 是以下错误
    undefined reference to `WinMain@16'
在动态版本内编译都没有问题的。是不是少什么库啊!帮忙看看!
难道静态编译真的不支持动态插件吗!求解?


离线yangkun52131

只看该作者 1楼 发表于: 2014-01-08
更新以下,有没有讨论的。
离线彩阳

只看该作者 2楼 发表于: 2014-01-08
少了WinMain。看看加上:
LIBS += -lmingw32
这句加在pro文件中的最前面试试看。
上海Qt开发联盟,热忱地欢迎你的加入!
离线yangkun52131

只看该作者 3楼 发表于: 2014-01-09
回 2楼(彩阳) 的帖子
这位楼兄,在哪都有你的存在。呵呵!
这个库加载了。出现的错误是:
../lib\libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16'
这样子。奇了怪。编译插件时怎么还要main函数。这不是qt内部处理了吗!
离线彩阳

只看该作者 4楼 发表于: 2014-01-09
再试试OBJECT += crt0.o,实在不行添加OBJECT += crt1.o等等。
上海Qt开发联盟,热忱地欢迎你的加入!
离线yangkun52131

只看该作者 5楼 发表于: 2014-01-10
回 4楼(彩阳) 的帖子
我觉得我们这些方法都不行。这应该是根本原因,确实是没有定义main入口函数的原因。可此原因是怎么导致的。就很奇怪。编译dll插件时,Qt好想没有定义入口函数。很奇怪。
离线dbzhang800

只看该作者 6楼 发表于: 2014-01-10
1. 静态Qt不支持 动态Qt插件, QPluginLoader的Manual中如是说:

Note that the QPluginLoader cannot be used if your application is statically linked against Qt

2. 你的插件编译出错,应该还是你的插件自身的问题,你可以看看 jpeg 等插件是怎样的,对比一下
离线yangkun52131

只看该作者 7楼 发表于: 2014-01-17
回 6楼(dbzhang800) 的帖子
确实,我测试很多方法。都不支持。编译dll动态插件时,找不到入口函数。我想尽办法。都不能实现,甚至想过。我编译成的dll,用工具去掉pe格式头,直接注入到进程中使用。可这样实在是浪费时间。没精力搞。暂时搁置吧!
快速回复
限100 字节
 
上一个 下一个