Qt-静态编译的exe引用共享的lib

Qt - statically compiled exe refers shared lib

本文关键字:共享 lib 引用 exe 编译 Qt- 静态      更新时间:2023-10-16

直到本周,我在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)。

现在,我的东西运行良好。我没有把它作为正确答案投票。因此,有人可以给出确切的答案。