я где-то промахнулась, но не пойму где...
Ситуация следующая:
есть 3 dll-ли, использующие много похожего кода, поэтому код был заблаговременно выделен в отдельную статическию lib (там был создан класс, в который и был помещен код). Все функции были сделаны static.
Туда же (но уже вне класса) были перенесены макросы для написания лога.
В связи с этим мне понадобилось в макросах заменить конкретное указание имени файла, который пишет что-то в лог, на какую-то переменную.
Не мудрствуя лукаво, я решила вопрос следующим образом:
в классе объявила
public:
static void setFileNames( char* pFileDll, char* pFileTest );
static char* getFileDll();
static char* getFileTest();
private:
static char m_sFileDll[128];
static char m_sFileTest[128];
Ну и напоследок в макросах стоит вот что:
MBT_PRINT_ERROR_OMS_HLP( message, err, MBTestHelper::getFileTest());
Статическая либа скомпилировалась на ура.
После этого я полезла в dll-лю и написала:
MBTestHelper::setFileNames( "OMSp_MBT_ComposTest.cpp", "MBTestCaseCompos.cpp" );
И вот тут получила при компиляции погонами следующую ошибку:
1>OMSp_MBT_HelpLib.lib(helper.obj) : error LNK2001: unresolved external symbol "private: static char * MBTestHelper::m_sFileTest" (?m_sFileTest@MBTestHelper@@0PADA)
1>OMSp_MBT_HelpLib.lib(helper.obj) : error LNK2001: unresolved external symbol "private: static char * MBTestHelper::m_sFileDll" (?m_sFileDll@MBTestHelper@@0PADA)
Никак не пойму, что я упустила...
Сразу оговорюсь - все остальные функции вызываются без проблем.