.h file:
#if defined(_WIN32) && !defined(__GNUC__)
# ifdef LOGLIB_DLL
# define LOGLIB_DECL __declspec(dllexport)
# else
# define LOGLIB_DECL __declspec(dllimport)
# endif
#endif // WIN32
#ifndef LOGLIB_DECL
# define LOGLIB_DECL
#endif
...
class LogWay{
...
public:
virtual ~LogWay()=0;
private:
virtual void Write(const LogMessage&)=0;
};
class LOGLIB_DECL LogFile: public LogWay {
public:
LogFile(std::string strFilename);
private:
// virtual void Write(const LogMessage&);
std::ofstream m_ofile;
std::string m_strFileName;
};
.cpp file:
...
LogFile::LogFile(std::string strFileName): m_strFileName(strFileName)
{}
...
компилируется без ошибок (работаю в MSVStudio)
когда выбираю Rebuild Solution, получаю ошибку:
Linking...
Creating library F:\avsokolov's documents\Visual Studio 2005\Projects\LogLibrary\Debug\LogLibrary.lib and object F:\avsokolov's documents\Visual Studio 2005\Projects\LogLibrary\Debug\LogLibrary.exp
LogLibrary.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) const logspace::LogFile::`vftable'" (__imp_??_7LogFile@logspace@@6B@) referenced in function "public: __thiscall logspace::LogFile::LogFile(class std::basic_string,class std::allocator >)" (??0LogFile@logspace@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
F:\avsokolov's documents\Visual Studio 2005\Projects\LogLibrary\Debug\LogLibrary.dll : fatal error LNK1120: 1 unresolved externals
> Может для классов содержащих виртуальные функции есть какое то правило??
> такая же ошибка возникает на Linux