• 12697阅读
  • 7回复

【提问】用vc6.0编译Qt4.1.0版本的程序 出错原因??? [复制链接]

上一主题 下一主题
离线xuxinshao
 

只看楼主 倒序阅读 楼主  发表于: 2006-02-16
【提问】用vc6.0编译Qt4.1.0版本的程序 出错原因???
用vc6.0编译Qt4.1.0版本的C:\Qt\4.1.0\examples\tutorial\t1

编译器提示
LIBCD.lib(crt0init.obj) : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,clas
s std::allocator<char> >(char const *)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,clas
s std::allocator<char> >(unsigned int,char)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_string<unsigned
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const *)" (__imp_??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_string<unsigned
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned int,unsigned short)" (__imp_??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __thiscall std::basic_istream<char,struct std::char_traits<char> >::_Ipfx(bool)" (__imp_?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@Q
AE_N_N@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Unlock(void)" (__imp_?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@
@@std@@QAEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Lock(void)" (__imp_?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@st
d@@QAEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall bad_cast::bad_cast(char const *)" (__imp_??0bad_cast@@QAE@PBD@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@
Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const " (__imp_?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::_Lockit::_Lockit(int)" (__imp_??0_Lockit@std@@QAE@H@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@Q
AEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __thiscall std::basic_istream<unsigned short,struct std::char_traits<unsigned short> >::_Ipfx(bool)" (__imp_?_Ipfx@?$basic_istream@GU?$char_t
raits@G@std@@@std@@QAE_N_N@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> >::_Unlock(void)" (__imp_?_Unlock@?$basic_streambuf@GU
?$char_traits@G@std@@@std@@QAEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> >::_Lock(void)" (__imp_?_Lock@?$basic_streambuf@GU?$ch
ar_traits@G@std@@@std@@QAEXXZ)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@
locale@2@@Z)
qtmaind.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@GU?$char_t
raits@G@std@@@std@@QAEXXZ)
Debug/qt.exe : fatal error LNK1120: 18 unresolved externals
Error executing link.exe.


我知道是运行库设置的有问题。默认是Debug Vsingle-Threaded,与msvcrtd.lib冲突,但是怎么解决呢?我试过在link项下的input项中ingore msvcrtd.lib还是没有用。我用VC.net 2003编译时选Debug Multithreaded DLL就可以。
离线XChinux

只看该作者 1楼 发表于: 2006-02-16
你这是在编译安装Qt??还是已经安装上了Qt而用VC6来编译用Qt写的程序??
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xuxinshao

只看该作者 2楼 发表于: 2006-02-16
已经安装上了Qt而用VC6来编译用Qt写的程序

我机器上安装有vc6.0和vc.net 2003,安装的是Qt4.1.0,我估计编译的时候是用vc.net 2003编译的,我现在正在卸载vc.net 2003,重新安装下Qt
离线xuxinshao

只看该作者 3楼 发表于: 2006-02-16
没有人碰到过这样的问题?我在www.qtforum.org上看了下也有一篇类似的文章,也没有解决方法,郁闷!!!
离线fanyu
只看该作者 4楼 发表于: 2006-02-16
VC6要用qt 3.x,qt 4.x要用VC.net。这是官方推荐的做法。
你的VC 6最好打上SP 6补丁。
离线xuxinshao

只看该作者 5楼 发表于: 2006-02-16
我安装的Qt是qt-win-commercial-desktop-4.0.0-vs2003.exe ,难道这个版本只能配合vs2003使用,不能用vc6.0编译?
是不是只能安装qt-win-commercial-desktop-4.0.0-vc60.exe 才能用vc6.0
离线renstone

只看该作者 6楼 发表于: 2006-02-17
这可能是visual c++的标准库的问题,因为你的用的是vc6,它本身对c++标准的支持并不太好。
建议你可以这样试一下。
用vc6重新编译qt4
如果不行的话,考虑用stlport代替vc自带的标准库或者把configure对stl的支持开关关掉编译。
还不行的话,可能就应当换编译器了。

估计你用的发行版不是用vc6编译的,他所默认连接的c++库是vs2003的,所以连接会出现问题。重新编译qt4生成debug和release库吧。

c++本身目标就不是作为一个二进制级的复用标准实现的
离线huliyaya
只看该作者 7楼 发表于: 2009-06-03
快速回复
限100 字节
 
上一个 下一个