函数没有在错误的DLL中find

我写了一个使用qtWindows应用程序,它具有许多dll依赖项。 但是,当我把它移动到另一台机器,我开始得到“入口点@@ somethingsomething没有在avformat55.dll中find”的错误。

踢球者是,这个消息是正确的。 该函数根本不在该dll中,它完全不同,也在可执行文件的文件夹中。

为什么会在错误的地方searchfunction? 应该如何解决?

编辑:我已经交换了所有ffmpeg dll为x64系统build立的; 这导致程序无法以0xc000007bexception开始; 这可能与系统是64位有关。

编辑。 我在其他几台机器上尝试过二进制文件,同样出现了x64或x86的错误。 但是debugging版本可以正常工作,所以这是一个版本构build问题。

编辑:我的.pro文件

#------------------------------------------------- # # Project created by QtCreator 2013-05-17T10:55:01 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = LPR_Demo TEMPLATE = app # The application version VERSION = 1.0 # Define the preprocessor macro to get the application version in our application. DEFINES += APP_VERSION=\\\"$$VERSION\\\" SOURCES += main.cpp\ mainwindow.cpp \ imgProcessor.cpp \ qpicturelabel.cpp \ aboutdialog.cpp \ state.cpp \ qt_videoreader.cpp \ roidialog.cpp \ recognitionresult.cpp \ ffmpeg_reader.cpp \ label_videoplayer.cpp HEADERS += mainwindow.h \ imgProcessor.h \ qpicturelabel.h \ aboutdialog.h \ state.h \ qt_videoreader.h \ roidialog.h \ recognitionresult.h \ global.h \ ffmpeg_reader.h \ label_videoplayer.h FORMS += mainwindow.ui \ aboutdialog.ui \ roidialog.ui LPRDIR = $$PWD/LPR win32: LIBS += -L$$LPRDIR/bin/ -lliblpr unix:LIBS += -L$$LPRDIR/bin -lLPR INCLUDEPATH += $$LPRDIR/include DEPENDPATH += $$LPRDIR/include INCLUDEPATH += $$PWD/ DEPENDPATH += $$PWD/ #OTHER_FILES += \ # ffmpeg.pri include(ffmpeg.pri) #LIBS += -lavformat -lavcodec -lavutil -lswscale RESOURCES += \ lpr_Res.qrc win32 { dlls_to_move.path += $$OUT_PWD/bin dlls_to_move.files += $$LPRDIR/bin/liblpr.dll QTDIR=C:/Qt/4.8.4/ CONFIG (debug, debug|release) { dlls_to_move.files += $$QTDIR/bin/QtCored4.dll \ $$QTDIR/bin/QtGuid4.dll } CONFIG (release, debug|release) { dlls_to_move.files += $$QTDIR/bin/QtCore4.dll \ $$QTDIR/bin/QtGui4.dll } img_format.path += $$OUT_PWD/bin/imageformats CONFIG (debug, debug|release) { img_format.files += $$QTDIR/plugins/imageformats/qgifd4.dll \ $$QTDIR/plugins/imageformats/qicod4.dll \ $$QTDIR/plugins/imageformats/qjpegd4.dll \ $$QTDIR/plugins/imageformats/qmngd4.dll \ $$QTDIR/plugins/imageformats/qsvgd4.dll \ $$QTDIR/plugins/imageformats/qtgad4.dll \ $$QTDIR/plugins/imageformats/qtiffd4.dll } CONFIG (release, debug|release) { img_format.files += $$QTDIR/plugins/imageformats/qgif4.dll \ $$QTDIR/plugins/imageformats/qico4.dll \ $$QTDIR/plugins/imageformats/qjpeg4.dll \ $$QTDIR/plugins/imageformats/qmng4.dll \ $$QTDIR/plugins/imageformats/qsvg4.dll \ $$QTDIR/plugins/imageformats/qtga4.dll \ $$QTDIR/plugins/imageformats/qtiff4.dll } ffmpeg_dll.path += $$OUT_PWD/bin ffmpeg_dll.files += $$FFMPEG_LIBRARY_PATH/avutil-*.dll \ $$FFMPEG_LIBRARY_PATH/avcodec-*.dll \ $$FFMPEG_LIBRARY_PATH/avformat-*.dll \ $$FFMPEG_LIBRARY_PATH/swscale-*.dll main_exe.path += $$OUT_PWD/bin CONFIG (debug, debug|release) { main_exe.files += $$OUT_PWD/debug/LPR_Demo.exe } CONFIG (release, debug|release) { main_exe.files += $$OUT_PWD/release/LPR_Demo.exe } INSTALLS += dlls_to_move img_format ffmpeg_dll main_exe } unix { CONFIG (release, debug|release) { QMAKE_PRE_LINK += rm LPR_Demo_cmpr LPR_Demo$$escape_expand(\n\t) QMAKE_POST_LINK += upx -9 -oLPR_Demo_cmpr LPR_Demo$$escape_expand(\n\t) QMAKE_POST_LINK += cp -v -u LPR_Demo_cmpr $$OUT_PWD/../artifacts/examples/qt_demo/bin/unix } 

}

和* .pri文件

 # Include the configuration file below in the QT .pro file, and modify the path accordingly. # ############################################################################## # ############################################################################## # FFMPEG: START OF CONFIGURATION BELOW -> # Copy these lines into your own project # Make sure to set the path variables for: # 1) ffmpeg_reader, # 2) FFMPEG include path (ie where the directories libavcodec, libavutil, etc. lie), # 3) the binary FFMPEG libraries (that must be compiled separately). # Under Linux path 2 and 3 may not need to be set as these are usually in the standard include and lib path. # Under Windows, path 2 and 3 must be set to the location where you placed the FFMPEG includes and compiled binaries # Note that the FFMPEG dynamic librairies (ie the .dll files) must be in the PATH # ############################################################################## # ############################################################################## # ############################################################################## # Modify here: set FFMPEG_LIBRARY_PATH and FFMPEG_INCLUDE_PATH # ############################################################################## # Set FFMPEG_LIBRARY_PATH to point to the directory containing the FFmpeg import libraries (if needed - typically for Windows), ie the dll.a files win32:FFMPEG_LIBRARY_PATH = $$PWD/ffmpeg/lib unix: FFMPEG_LIBRARY_PATH = /usr/local/lib # Set FFMPEG_INCLUDE_PATH to point to the directory containing the FFMPEG includes (if needed - typically for Windows) win32:FFMPEG_INCLUDE_PATH = $$PWD/ffmpeg/include unix:FFMPEG_INCLUDE_PATH = /usr/local/include # ############################################################################## # Do not modify: FFMPEG default settings # ############################################################################## # Set list of required FFmpeg libraries #unix:LIBS += -L$$FFMPEG_LIBRARY_PATH unix:LIBS += -lavformat -lavcodec -lavutil -lswscale # Add the path win32:LIBS += -L$$FFMPEG_LIBRARY_PATH win32:LIBS += -lavformat -lavcodec -lavutil -lswscale INCLUDEPATH += $$FFMPEG_INCLUDE_PATH # Requied for some C99 defines DEFINES += __STDC_CONSTANT_MACROS # ############################################################################## # FFMPEG: END OF CONFIGURATION # ############################################################################## 

Solutions Collecting From Web of "函数没有在错误的DLL中find"