LNK2019. Visual Studio 2008.
От: Camarada Россия  
Дата: 21.01.10 06:08
Оценка:
В общем ситуация такая.

Есть native cpp static libraries.

Структура солюшена такая:

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)

Может какие-то опции компилятора. Заранее извиняюсь, если не нашел соответствующей темы, спасибо за внимание.
lnk2019 visual studio 2008 library template
Re: LNK2019. Visual Studio 2008.
От: Centaur Россия  
Дата: 21.01.10 06:18
Оценка: 2 (1)
Здравствуйте, 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.
Re[2]: LNK2019. Visual Studio 2008.
От: Camarada Россия  
Дата: 21.01.10 06:37
Оценка:
Здравствуйте, Centaur, Вы писали:

C>В клиенте где-то затесался #include <windows.h>, в котором #define GetObject GetObjectA.


Спасибо большое, догадывался, что это с COM как-то связанно, но вот это в голову не пришло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.