0

我正在尝试在 Qt 中使用和制作 DLL。DLL,使用任何 Qt 框架。这是我图书馆的 .pro 文件:

TARGET = MyLib
TEMPLATE = lib

include(Botan.pri)
win32:INCLUDEPATH += "C:/botan/include"
win32:LIBS += "C:/botan/libBotan.a"

unix:INCLUDEPATH += "/usr/local/include/botan-1.10"
unix:LIBS += "/usr/local/lib/libbotan-1.10.a"

HEADERS += \
    HEADERS HERE

SOURCES += \
    SOUCRES HERE

我的库编译成功,并且在我的调试/发布文件夹中得到了一个 MyLib.dll。然后我完全复制了我的库源,并删除了除“includes”文件夹的头文件之外的所有内容。

然后我创建了一个新项目来使用我的库。

我将此添加到我的项目文件中:

INCLUDEPATH += "C:/Users/Stevie/Desktop/MyLib/include"
LIBS += "C:/Users/Stevie/Desktop/MyLib/MyLib.dll"

标头没有问题,它发现我的 DLL 很好(如果我将它更改为不存在的路径,它会引发错误。它现在还没有。)

现在,当我进入我的“.cpp”文件时,我包含了我的头文件,并尝试使用我的库,它会抛出“未定义的引用MyLib::...”。我不知道为什么,因为我包含了 DLL,并且我相信它应该非常好。

此外,我 99% 确定它与 Botan 无关,因为我经常这样使用 Botan,而且效果很好。无论如何,为了确定,我无论如何都包含了“Botan.dll”,但它不会在 Botan 上抛出未定义的错误。

谢谢。

4

1 回答 1

0

将 LIBS += "C:/Users/Stevie/Desktop/MyLib/MyLib.dll"
替换为
LIBS += -L$$quote(C:/Users/Stevie/Desktop/MyLib)
LIBS += -l$$quote(我的库)

你的图书馆有 Q_DECL_EXPORT / Q_DECL_IMPORT 宏吗?

毕竟清理并重建使用库的项目。

于 2012-10-24T05:30:28.697 回答