Как это сделать грамотно?
Я делаю следующим образом:
Взаголовке для программы-пользователя DLL сначала стандартные директивы (как и в заголовке из проекта для DLL):
#ifdef LOG_EXPORTS
#define LOG_API __declspec(dllexport)
#else
#define LOG_API __declspec(dllimport)
#endif
Затем привожу определение класса:
class LOG_API Log :
public ofstream
{
public:
Log(const char* szFn=DEFAULT_LOG_FILE,openmode om=DEFAULT_OPEN_MODE);
int openLog(const char* szFn=DEFAULT_LOG_FILE,openmode om=DEFAULT_OPEN_MODE);
// ifstream& operator <<(const char* szMsg);
// ifstream& operator <<(unsigned n);
public:
void closeLog();
~Log(void);
};
Но при компиляции в Visual Studio 2005 получаю ошибку:
error C2470: 'Log' : looks like a function definition, but there is no parameter list; skipping apparent body
На строке class LOG_API Log :. Пробовал вместо LOG_API явно указывать __declspec(dllimport) — та же ошибка.