我的Mac上有一些Qt项目,而我目前正试图在Windows上获得相同的代码。在这些项目中,有一个dll(称为LibraryA)导出了一个类(称为ClassA),该类由另一个dll(称为LibraryB)链接。
我有以下代码,这些代码根据所使用的编译器定义要使用的dll导出代码。
#ifdef _MSC_VER
#if defined(LIBRARY_A)
#define LIBRARY_A_EXPORT __declspec(dllexport)
#else
#define LIBRARY_A_EXPORT __declspec(dllimport)
#endif
#else
#define LIBRARY_A_EXPORT
#endif
然后,我将其合并到我的类(class)定义中。
class LIBRARY_A_EXPORT ClassA
但是,在Windows上,我在LibraryB中得到了无法解析的符号__declspec(dllimport)。
我做错了什么?
编辑我创建了几个独立的项目来尝试使它正常工作(再次称为LibraryA和LibraryB)。 LibraryA成功构建,在LibraryB项目中,我使用“添加库”对话框,选择“外部库”。这给了我下面的.pro文件条目,它们仍然无法正常工作
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../build-LibraryA-Desktop_Qt_5_5_1_MSVC2013_64bit-Debug/release/ -lLibraryA
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../build-LibraryA-Desktop_Qt_5_5_1_MSVC2013_64bit-Debug/debug/ -lLibraryA
INCLUDEPATH += $$PWD/../build-LibraryA-Desktop_Qt_5_5_1_MSVC2013_64bit-Debug/debug
DEPENDPATH += $$PWD/../build-LibraryA-Desktop_Qt_5_5_1_MSVC2013_64bit-Debug/debug
最佳答案
我看到一些可能的情况:
LIBS += -L$$PWD/Path_To_LibraryA_Dll/ -lLibraryA
LIBRARY_A
宏,并且LIBRARY_A_EXPORT
也没有定义为__declspec(dllexport)
,在这种情况下,LibraryA不会导出任何内容供外部使用。确保在LibraryA'pro'文件中具有定义:DEFINES += LIBRARY_A
关于c++ - 如何在Windows上使用Qt Creator导出并链接到dll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34663527/