Windows下编译Qt为静态编译环境时报错,undefined reference to `qFree(void*)'

yinlixing 2010-03-19 02:15:19
我用的xp操作系统,安装的是qt-sdk-win-opensource-2010.02.1,我想用它进行静态编译类库,安装手册上说的方法,
首先运行configure -static 没有报错
然后mingw32-make sub-src失败,提示如下

。。。。。。
undefined reference to `qFree(void*)'

collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\bin\moc.exe] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/2010-02-1/qt/src/tools/moc'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/2010-02-1/qt/src/tools/moc'
mingw32-make: *** [sub-moc-make_default-ordered] Error 2


请问这是怎么回事呀?如何才能编译通过。
...全文
1571 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
love_u_qt 2010-09-10
  • 打赏
  • 举报
回复
太深奥了~~~~
跟随内心 2010-09-06
  • 打赏
  • 举报
回复
帮不上忙,只能帮顶
arabicsara 2010-08-28
  • 打赏
  • 举报
回复
我是出现这样的错误:release/main.o:main.cpp:(.text$_ZN5QListI8ClassDefE4freeEPN9QListData4DataE[QList<ClassDef>::free(QListData::Data*)]+0x2fd): undefined reference to `q
Free(void*)'
release/main.o:main.cpp:(.text$_ZN5QListI8ClassDefE4freeEPN9QListData4DataE[QList<ClassDef>::free(QListData::Data*)]+0x32c): more undefined references
to `qFree(void*)' follow
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\bin\moc.exe] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/2010.04/qt/src/tools/moc'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/2010.04/qt/src/tools/moc'
mingw32-make: *** [sub-moc-make_default-ordered] Error 2
arabicsara 2010-08-28
  • 打赏
  • 举报
回复
up~~~
guozhixin 2010-08-26
  • 打赏
  • 举报
回复
我静态编译成功了,用的是网上静态编译4.6.1的文档,版本为2010.01,我也试过用更高的版本,但是好像不行,只能用这个版本
记录在案 2010-06-24
  • 打赏
  • 举报
回复
楼主你解决了没有呢?我也是碰到这样的问题不知道怎么解决!
yinlixing 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 tingsking18 的回复:]
两个版本的代码一样吗?
如果是一抹一样的版本,那就只能说明是那个著名的问题了。!
[/Quote]
是一样的,请问是什么著名问题
tingsking18 2010-03-22
  • 打赏
  • 举报
回复
两个版本的代码一样吗?
如果是一抹一样的版本,那就只能说明是那个著名的问题了。!
yinlixing 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 tingsking18 的回复:]
你的机器上是不是装了两个不同版本的qt?
[/Quote]

我装的都是4.6.2版本,但之前有一个默认共享编译的版本。我又装拷贝了一个,想编译成静态编译版本
yinlixing 2010-03-22
  • 打赏
  • 举报
回复
不许沉底
yinlixing 2010-03-21
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 tingsking18 的回复:]
设置QTDIR/bin到系统的path中
[/Quote]
这个已经试过了
[Quote=引用 22 楼 tingsking18 的回复:]
qFree是QtCore中的函数。
你上面的错误是链接不到这个函数,所以你应该查看一下QtCore.lib/a的输出目录,把这个目录设定到系统的path中去,或者在makefile中通过-I选项指定。
如果使用vc6
打开C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
set LIB上面设置上QtCore.lib……
[/Quote]
这个QtCore.a已经试过了,可还是不成功
tingsking18 2010-03-21
  • 打赏
  • 举报
回复
你的机器上是不是装了两个不同版本的qt?
tingsking18 2010-03-20
  • 打赏
  • 举报
回复
qFree是QtCore中的函数。
你上面的错误是链接不到这个函数,所以你应该查看一下QtCore.lib/a的输出目录,把这个目录设定到系统的path中去,或者在makefile中通过-I选项指定。
如果使用vc6
打开C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
set LIB上面设置上QtCore.lib所在的路径。

tingsking18 2010-03-20
  • 打赏
  • 举报
回复
设置QTDIR/bin到系统的path中
yinlixing 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qter_wd007 的回复:]
没错,使用nmake是出于什么考虑,是矛盾的
[/Quote]
其实我mingw32-make和nmake都试过了,报的错误信息是一样的,我估计主要是undefined reference to `qFree(void*)'
这样的话的错误
qter_wd007 2010-03-20
  • 打赏
  • 举报
回复
没错,使用nmake是出于什么考虑,是矛盾的
yinlixing 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 tingsking18 的回复:]
configure -static -platfor win32-g++


platform少了个m吧

你既然执行了win32-g++为什么还用nmake?
[/Quote]

hehe,不好意思,是我刚才发帖时少打了一个m
tingsking18 2010-03-20
  • 打赏
  • 举报
回复
configure -static -platfor win32-g++


platform少了个m吧

你既然执行了win32-g++为什么还用nmake?
yinlixing 2010-03-19
  • 打赏
  • 举报
回复
我用的就是qt-everywhere-opensource-src-4.6.2 ,这么晚了请你帮忙真是非常感谢
dyw 2010-03-19
  • 打赏
  • 举报
回复
Qt SDK包用的是哪个?要用有版本号的那个包,如4.6.2之类的,不要用带年月的。
加载更多回复(14)

16,239

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧