• 9010阅读
  • 7回复

【提问】请教一个MinGW下link出错的问题 [复制链接]

上一主题 下一主题
离线yoke_wolf
 
只看楼主 倒序阅读 楼主  发表于: 2006-01-05
刚用QT,遇到了问题,翻了以前的帖子,无果。所以开帖请教

环境:
windows 2k
qt-win-opensource-4.1.0-mingw.exe
MinGW-3.2.0
MSYS-1.0.10
mingw32-make-3.80.0-3

Designer 简单拖了个UI, uic->qmake->make,出错

出错信息如下:

$ make
make -f Makefile.Debug
make[1]: Entering directory `/e/yoke/work/qt/first'
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows -o "debug\first.exe"   -L"D:\soft\devtools\SDK\QtForMinGW\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0xd): In function `Z16q_atomic_set_ptrPVvPv':
D:/soft/devtools/SDK/QtForMinGW/include/QtCore/../../src/corelib/thread/qatomic.h: undefined reference to `std::string::size() const'
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0x60):D:/soft/devtools/SDK/QtForMinGW/include/QtCore/../../src/corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsigned int) const'
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0x9f):D:/soft/devtools/SDK/QtForMinGW/include/QtCore/../../src/corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsigned int) const'
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0xce):D:/soft/devtools/SDK/QtForMinGW/include/QtCore/../../src/corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsigned int) const'
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0x10f): In function `WinMain':
D:/soft/devtools/SDK/QtForMinGW/src/winmain/qtmain_win.cpp:68: undefined reference to `__gxx_personality_sj0'
D:\soft\devtools\SDK\QtForMinGW\lib/libqtmaind.a(qtmain_win.o)(.text+0x30b):D:/soft/devtools/SDK/QtForMinGW/src/winmain/qtmain_win.cpp:105: undefined reference to `qMain(int, char**)'
collect2: ld returned 1 exit status
make[1]: *** [debug\first.exe] Error 1
make[1]: Leaving directory `/e/yoke/work/qt/first'
make: *** [debug] Error 2

好像是stl引发的问题
不知道怎么解决
请朋友们帮忙看看,应该怎么办
[ 此贴被XChinux在2006-01-05 21:47重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2006-01-05
看样子是路径设置的不正确。
include路径里找不到std::string
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 2楼 发表于: 2006-01-05
如果你用g++编译一个简单的C++程序而也通不过的话,说明就是路径不正确。你试试。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yoke_wolf
只看该作者 3楼 发表于: 2006-01-06
我开始也想到了这个
我试过把sgi stl直接放在d:/sgi_stl下
然后make -I /d/sgi_stl
但问题依旧呀
是不是不能这样加搜索路径
离线XChinux

只看该作者 4楼 发表于: 2006-01-06
还有include路径,不光是ld路径
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yoke_wolf
只看该作者 5楼 发表于: 2006-01-06
先谢谢了

这里说的....具体要怎么设?

我makefile直接改这样都不行:

CC         = gcc
CXX       = g++
LEX       = flex
YACC       = byacc
DEFINES     = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
CFLAGS     = -g -g -Wall $(DEFINES)
CXXFLAGS     = -g -g -frtti -fexceptions -Wall $(DEFINES)
LEXFLAGS     =
YACCFLAGS   = -d
INCPATH     = -I"D:/soft/devtools/SDK/QtForMinGW/include/QtCore" -I"D:/soft/devtools/SDK/QtForMinGW/include/QtGui" -I"D:/soft/devtools/SDK/QtForMinGW/include" -I"." -I"D:/soft/devtools/SDK/QtForMinGW/include/ActiveQt" -I"debug" -I"." -I"D:/soft/devtools/SDK/QtForMinGW/mkspecs/win32-g++" -I"D:/SGI_STL"
LINK     =     g++
LFLAGS     =     -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows
LIBS     =     -L"d:\SGI_STL" -L"D:\soft\devtools\SDK\QtForMinGW\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
QMAKE       = qmake
IDC       = D:\soft\devtools\SDK\QtForMinGW\bin\idc.exe
..........
离线XChinux

只看该作者 6楼 发表于: 2006-01-06
弄出这么多麻烦,呵呵,为简单起见,建议楼主重新安装。
先安装本战提供下载的devcpp-4.9.9.2,然后再安装qt for mingw
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yoke_wolf
只看该作者 7楼 发表于: 2006-01-07
呵呵
首先严重感谢总版主XChinux老兄!

已经找到一种解决方案了。
前面几条和stl相关的错误信息通过覆盖安装MinGW消失了。
N个论坛发帖未果。N次尝试后
发现把uic生成的cpp文件命明为 "main.cpp",后面两条出错也告消失。一切就OK了。
可能和qmake 环境有关。具体要要以后再看落,呵呵

再次感谢!
快速回复
限100 字节
 
上一个 下一个