以下是我在Qt框架中使用的代码的简化版本:
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和测试都正确编译和链接,因为上面使用了非const QString。但是,当我编写QString const时,我在编译测试时得到一个未解决的外部符号错误,我假设这是因为const变量未在头文件中初始化。如果我在那里初始化它,当我尝试编译测试时,我得到关于DLL导入前缀的错误。
修复此错误的正确方法是什么?我希望能够从导入此DLL的模块中访问const QString变量。
答案 0 :(得分:0)
如果您可以接受标头中定义的const字符串解决方案,则根本不需要导入该符号:
//foo.h
static const QString testString = "Test string";
应该足够了 - 可以在导入dll的模块和dll本身内部访问testString。