使用DLL Qt - 未定义的参考

时间:2012-10-22 22:09:39

标签: c++ qt dll

我正在尝试在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'文件时,我会包含我的头文件,并尝试使用我的库,它会抛出'{1}}的未定义引用...'。我不知道为什么,因为我包括DLL,我相信它应该被发现完全没问题。

另外,我99%肯定它不是Botan,因为我经常这样使用Botan,它工作正常。无论如何,我还是把它包含在'Botan.dll'中以确保它,但它不会在Botan上抛出未定义的错误。

感谢。

1 个答案:

答案 0 :(得分:0)

替换 LIBS + =“C:/Users/Stevie/Desktop/MyLib/MyLib.dll”

LIBS + = -L $$ quote(C:/ Users / Stevie / Desktop / MyLib)
LIBS + = -l $$ quote(MyLib)

您的库是否有Q_DECL_EXPORT / Q_DECL_IMPORT宏?

然后清理并重建使用库的项目。