下導出全局常量變量是我與Qt框架使用的代碼的簡化版本:從DLL
了foo.h:
// Defines DLL import or export as required
#if defined(REGEXUTIL_LIBRARY)
#define LIBRARY_EXPORT Q_DECL_EXPORT
#else
#define LIBRARY_EXPORT Q_DECL_IMPORT
#endif
LIBRARY_EXPORT extern const QString testString;
Foo.cpp中:
#include "foo.h"
LIBRARY_EXPORT const QString testString = "Test string";
TEST.CPP,在模塊其中進口此DLL:
const QString s = testString;
我知道DLL和測試編譯和鏈接正確,因爲上述工作與非常量QString。但是,當我編譯QString常量時,我在編譯測試時遇到了無法解析的外部符號錯誤,我假設這是因爲const變量未在頭文件中初始化。如果我在那裏初始化它,當我嘗試編譯測試時,我得到錯誤的DLL導入前綴不被允許。
解決此錯誤的正確方法是什麼?我想能夠從導入此DLL的模塊訪問const QString變量。
您是否嘗試過不使用'extern'關鍵字? – Rob
如果我擺脫了extern,那麼使用「testString已經在foo.obj中定義」編譯的DLL錯誤。 – x6herbius