从DLL导出全局const变量

时间:2013-12-20 21:47:51

标签: c++ qt dll

以下是我在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变量。

1 个答案:

答案 0 :(得分:0)

如果您可以接受标头中定义的const字符串解决方案,则根本不需要导入该符号:

//foo.h
static const QString testString = "Test string";

应该足够了 - 可以在导入dll的模块和dll本身内部访问testString。