存在的缺失DLL的运行时错误

时间:2012-12-19 11:45:25

标签: qt dll pthreads

我正在使用Qt Creator编写一个工具,它可以构建但会立即崩溃并显示消息:

  

“程序无法启动,因为您的pthreadVC2.dll缺失   电脑。尝试重新安装程序以解决此问题“。

当然,“pthreadVC2.dll”库不会丢失(并且没有损坏,因为它适用于其他项目),并且它位于Qt pro文件中指定的路径中:

# DeltaPlots.pro

TARGET = DeltaPlots
QT += core gui
CONFIG += console
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TEMPLATE = app

win32 {
    INCLUDEPATH += S:\\3rdparty\\DFS.Infrastructure.ThreadingW \
                   S:\\3rdparty\\DFS.Infrastructure.File \
            "C:\\path\\to\\boost\\boost_1_51_0"

    win32-g++:LIBS += -L"S:\\lib\\" -lMyLib
    win32-g++:LIBS += -L"S:\\3rdparty\\DFS.Infrastructure.File\\" -lDFS.Infrastructure.FileSystem
    win32-g++:LIBS += -L"S:\\3rdparty\\DFS.Infrastructure.ThreadingW\\" -lDFS.Infrastructure.Threading -lpthreadVC2
}

SOURCES += MainWindow.cpp \
           entrypoint.cpp

HEADERS += MainWindow.h

FORMS   += MainWindow.ui

OTHER_FILES += ProjectList.txt \
               ImageList.txt

平台:
Windows 7
MinGW的
Qt 4.8.3
Qt Creator 2.6.0

1 个答案:

答案 0 :(得分:1)

[编辑:此答案涉及原始问题]

通常你会添加

LIBS += -LS:/3rdparty/DFS.Infrastructure.ThreadingW \
        -lpthreadVC2

这会将您图书馆的文件夹添加为库搜索路径(请注意首都-L)和pthreadVC2.lib作为要链接的库(小写-l)。

您不需要将.dll添加到LIBS路径,因为.dll是在运行时加载的。

但是:此方法仅在.lib与.dll位于同一文件夹中时才有效。我有点惊讶你在不同的地方有你的。

可能会添加

LIBS += -LS:/3rdparty

可行,但我不确定。

无论如何,您需要将.dll与.exe一起部署用于发行版。