__declspec (dllexport) should only be defined when compiling the dll. You could do something like this:
Code:
#ifndef DLL_HPP
#define DLL_HPP
#include <windows.h>
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C
#endif
#ifdef BUILDING_DLL
#ifdef USE_DEFAULT_DLL_MAIN
BOOL APIENTRY DllMain( HINSTANCE, DWORD, LPVOID )
{
return TRUE;
}
#endif
#define DYNAMIC EXTERN_C __declspec ( dllexport )
#else
#define DYNAMIC EXTERN_C
#endif
#endif /* DLL_HPP */
And then:
Code:
// foo.hpp
#ifndef FOO_HPP
#define FOO_HPP
#include "dll.hpp"
DYNAMIC int WINAPI foo(int);
#endif /* FOO_HPP */
Code:
// foo.cpp
#define BUILDING_DLL
#define USE_DEFAULT_DLLMAIN
#include "dll.hpp"
#include "foo.hpp"
DYNAMIC int WINAPI foo(int foo2) {
return 0;
}