[visual-studio]从 DLL 导出的全局变量

标签: Visual-Studio dll
发布时间: 2014/2/28 20:14:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想从 DLL 导出的全局变量。

Foo.h

class Foo
{
public:
    Foo()
    {}
};

#ifdef PROJECT_EXPORTS
    #define API __declspec(dllexport)
#else
    #define API __declspec(dllimport)
#endif

API const Foo foo;

Foo.cpp

#include "Foo.h"

const Foo foo;

当我编译上面的代码时,Visual Studio 抱怨:

foo.cpp(3): 错误 C2370: foo: 重新定义 ;不同的存储类 1 > foo.h(14): 请参见 foo 的宣言

如果我使用:

external const Foo foo;

在 Foo.h 编译器是快乐但然后 DLL 不会导出符号。我已经设法导出函数的问题,但似乎变量不能工作的同样方式......有什么想法?

解决方法 1:

在您的标头:

API extern const Foo foo;

在您的源文件:

API const Foo foo;

如果你没有 extern 关键字,您的 C 编译器假定你的意思是要声明一个本地变量。(它根本就不在乎你碰巧有包括头文件来自定义)你还需要告诉你打算当你实际上您的源文件中声明它导出变量,编译器。

赞助商