Qt-静态编译的exe引用共享的lib
Qt - statically compiled exe refers shared lib
直到本周,我在Qt中的静态编译都很好。我重新安装了qt,并重新编译了静态版本。头痛是从这之后开始的。现在,尽管我使用static版本进行编译。生成的exe需要Qt库。我用"dependency Walker"检查了exe。它显示所需dll的路径指向动态/共享libs路径。以下是我的设置
Environment:
QTDYNDIR : D:tempinstallationfolderQtdynamic
QTSTADIR : D:tempinstallationfolderQtstatic
Path : %QTDYNDIR%bin;%QTDYNDIR%qtbin;%QTDYNDIR%mingwbin;
%QTSTADIR%bin;%QTSTADIR%qtbin;%QTSTADIR%mingwbin;
我添加了mingw、qt路径不知怎的,它设法遵循了动态库的路径。我不知道我在哪里犯的错。有人能在这个问题上帮我吗?。
注意:我使用的是Windows平台-qt-4.7.0(qt-开源v2010.05)的静态、动态到qt的Creater=>Tools=>Options=>qt。
编辑:这个来自编译输出。其中没有提到动态路径目录。
Running build steps for project CalendarNew...
Starting: "D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make.exe" clean -w
mingw32-make: Entering directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make -f Makefile.Release clean
mingw32-make[1]: Entering directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
del releasemoc_CalendarWidget.cpp releasemoc_DateSquareEditWidget.cpp releasemoc_GeneralSettingsWidget.cpp releasemoc_MyColorButton.cpp releasemoc_MyLabel.cpp
del releaseCalendarWidget.o releaseDateSquare.o releaseDateSquareEditWidget.o releaseGeneralSettingsWidget.o releasemain.o releaseMyColorButton.o releaseMyLabel.o releasemoc_CalendarWidget.o releasemoc_DateSquareEditWidget.o releasemoc_GeneralSettingsWidget.o releasemoc_MyColorButton.o releasemoc_MyLabel.o
mingw32-make[1]: Leaving directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make -f Makefile.Debug clean
mingw32-make[1]: Entering directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
del debugmoc_CalendarWidget.cpp debugmoc_DateSquareEditWidget.cpp debugmoc_GeneralSettingsWidget.cpp debugmoc_MyColorButton.cpp debugmoc_MyLabel.cpp
del debugCalendarWidget.o debugDateSquare.o debugDateSquareEditWidget.o debugGeneralSettingsWidget.o debugmain.o debugMyColorButton.o debugMyLabel.o debugmoc_CalendarWidget.o debugmoc_DateSquareEditWidget.o debugmoc_GeneralSettingsWidget.o debugmoc_MyColorButton.o debugmoc_MyLabel.o
mingw32-make[1]: Leaving directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
mingw32-make: Leaving directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
Could Not Find C:Documents and SettingsprabhakaranDesktopCalendarNew-build-desktopdebugmoc_CalendarWidget.cpp
Could Not Find C:Documents and SettingsprabhakaranDesktopCalendarNew-build-desktopdebugCalendarWidget.o
The process "D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make.exe" exited normally.
Configuration unchanged, skipping qmake step.
Starting: "D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseCalendarWidget.o ..CalendarNewCalendarWidget.cpp
..CalendarNewCalendarWidget.cpp: In constructor 'CalendarWidget::CalendarWidget()':
..CalendarNewCalendarWidget.cpp:93: warning: 'default_String_Fontsize' may be used uninitialized in this function
..CalendarNewCalendarWidget.cpp:96: warning: 'lower_String_Fontsize' may be used uninitialized in this function
..CalendarNewCalendarWidget.cpp: In constructor 'CalendarWidget::CalendarWidget()':
..CalendarNewCalendarWidget.cpp:93: warning: 'default_String_Fontsize' may be used uninitialized in this function
..CalendarNewCalendarWidget.cpp:96: warning: 'lower_String_Fontsize' may be used uninitialized in this function
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseDateSquare.o ..CalendarNewDateSquare.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseDateSquareEditWidget.o ..CalendarNewDateSquareEditWidget.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseGeneralSettingsWidget.o ..CalendarNewGeneralSettingsWidget.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemain.o ..CalendarNewmain.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseMyColorButton.o ..CalendarNewMyColorButton.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releaseMyLabel.o ..CalendarNewMyLabel.cpp
D:TempInstallationFolderQtstaticqtbinmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -D__GNUC__ -DWIN32 ..CalendarNewCalendarWidget.h -o releasemoc_CalendarWidget.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemoc_CalendarWidget.o releasemoc_CalendarWidget.cpp
D:TempInstallationFolderQtstaticqtbinmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -D__GNUC__ -DWIN32 ..CalendarNewDateSquareEditWidget.h -o releasemoc_DateSquareEditWidget.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemoc_DateSquareEditWidget.o releasemoc_DateSquareEditWidget.cpp
D:TempInstallationFolderQtstaticqtbinmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -D__GNUC__ -DWIN32 ..CalendarNewGeneralSettingsWidget.h -o releasemoc_GeneralSettingsWidget.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemoc_GeneralSettingsWidget.o releasemoc_GeneralSettingsWidget.cpp
D:TempInstallationFolderQtstaticqtbinmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -D__GNUC__ -DWIN32 ..CalendarNewMyColorButton.h -o releasemoc_MyColorButton.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemoc_MyColorButton.o releasemoc_MyColorButton.cpp
D:TempInstallationFolderQtstaticqtbinmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -D__GNUC__ -DWIN32 ..CalendarNewMyLabel.h -o releasemoc_MyLabel.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"d:TempInstallationFolderQtstaticqtincludeQtCore" -I"d:TempInstallationFolderQtstaticqtincludeQtGui" -I"d:TempInstallationFolderQtstaticqtinclude" -I"..CalendarNew" -I"d:TempInstallationFolderQtstaticqtincludeActiveQt" -I"release" -I"." -I"d:TempInstallationFolderQtstaticqtmkspecswin32-g++" -o releasemoc_MyLabel.o releasemoc_MyLabel.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o releaseCalendarNew.exe object_script.CalendarNew.Release -L"d:TempInstallationFolderQtstaticqtlib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
mingw32-make[1]: Leaving directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
mingw32-make: Leaving directory `C:/Documents and Settings/prabhakaran/Desktop/CalendarNew-build-desktop'
The process "D:/TempInstallationFolder/Qt/static/mingw/bin/mingw32-make.exe" exited normally.
注意:现在只有我为动态和静态进行了新的安装。尽管如此,它还是能够产生同样的结果。
您是否已将此行添加到projectname.pro文件中?
CONFIG += static
并确保在QtCreator Projects Build设置中,"Qt版本"指向您的静态构建?
我不确定这是否是正确的答案。我做了以下更改。我不确定是哪一个纠正了我的问题。
1) 似乎必须有一个名为QTDIR的环境变量,它指向动态安装目录
2) 我使用"visualstudio"而不是"mingw"编译了用于静态构建的qt-libs。
在这些步骤之后,我向路径添加了静态和动态的绝对路径(qt-bin,lib,minwg-bin,ib)。
现在,我的东西运行良好。我没有把它作为正确答案投票。因此,有人可以给出确切的答案。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- 为什么我的程序寻找共享资源.dll而不是Commons.lib
- 静态库将转换为共享的lib符号隐藏
- 如何在Windows Cmake中设置DLIB作为静态安装的共享LIB
- cmake : 共享库 : 如何获取 .lib 名称而不是.dll名称
- CMAKE链接在Windows上共享库(LIB),但找不到DLL
- buildroot:仅构建一个包裹作为共享和静态lib,所有其他包装仅共享
- 如果C 共享LIB会在C项目中引发一个exeption,会发生什么
- 多个动态链接库(DLL)是否可以从静态库(LIB)共享线程本地存储
- 无法加载/usr/local/lib(Fedora x64)中存在的共享库
- Qt在windows中共享库,不生成.lib文件
- 如何创建一个具有全局变量的 lib 文件,这些全局变量应该将其信息共享给另一个项目
- 当库已经在/usr/local/lib中时,无法找到共享库
- Qt-静态编译的exe引用共享的lib