Exportar variables globales desde DLL
Estoy tratando de exportar una variable global desde una 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;
Cuando compilo el código anterior, Visual Studio se queja:
foo.cpp (3): error C2370: 'foo': redefinición; clase de almacenamiento diferente 1> foo.h (14): ver declaración de 'foo'
Si yo uso:
external const Foo foo;
en Foo.h el compilador está contento pero la DLL no exporta el símbolo. Logré exportar funciones con problemas, pero las variables no parecen funcionar de la misma manera ... ¿Alguna idea?