lib1.lib — самая первоначальная библиотека (использует только сишные и виндовые библиотеки)
lib2.lib — то же, но юзает lib1.lib (не подключается явно, обе либы подключаются в других проектах)
lib3.lib — юзает первые 2 (подключены явно в Additional Dependencies)
dll1.dll — Смешанная Managed C++ DLL, юзает lib3.lib
exe1.exe — MFC приложение, юзает lib3.lib
В общем в lib1.lib был добавлен интерфейс, который реализуют классы из lib1.lib и lib2.lib, а также
нешаблонный класс имеющий отдельные статические шаблонные методы.
После этого добавления
Error 1 error LNK2019: unresolved external symbol "public: static class rcl::ISerializable * __cdecl rcl::Serializer::GetObjectA(class rcl::ISerializable *,class rcl::array<unsigned char> &,int &)" (?GetObjectA@Serializer@rcl@@SAPAVISerializable@2@PAV32@AAV?$array@E@2@AAH@Z) referenced in function "public: static bool __cdecl rcl::Serializer::Deserialize<class path_creator::Path>(class path_creator::Path *,class rcl::array<unsigned char> &,class rcl::array<class path_creator::Path *> &)" (??$Deserialize@VPath@path_creator@@@Serializer@rcl@@SA_NPAVPath@path_creator@@AAV?$array@E@1@AAV?$array@PAVPath@path_creator@@@1@@Z) arm_client.lib ARM
Прикол в том, что выделенная функция называется GetObject, а добавилось A, как будто это произошло автоматически (когда например мы импортим в C# функции из WinAPI)
Может какие-то опции компилятора. Заранее извиняюсь, если не нашел соответствующей темы, спасибо за внимание.
Здравствуйте, Camarada, Вы писали:
C>Error 1 error LNK2019: unresolved external symbol "public: static class rcl::ISerializable * __cdecl rcl::Serializer::GetObjectA(class rcl::ISerializable *,class rcl::array<unsigned char> &,int &)" (?GetObjectA@Serializer@rcl@@SAPAVISerializable@2@PAV32@AAV?$array@E@2@AAH@Z) referenced in function "public: static bool __cdecl rcl::Serializer::Deserialize<class path_creator::Path>(class path_creator::Path *,class rcl::array<unsigned char> &,class rcl::array<class path_creator::Path *> &)" (??$Deserialize@VPath@path_creator@@@Serializer@rcl@@SA_NPAVPath@path_creator@@AAV?$array@E@1@AAV?$array@PAVPath@path_creator@@@1@@Z) arm_client.lib ARM
C>Прикол в том, что выделенная функция называется GetObject, а добавилось A, как будто это произошло автоматически (когда например мы импортим в C# функции из WinAPI)
В клиенте где-то затесался #include <windows.h>, в котором #define GetObject GetObjectA.