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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta