#cpp #visual_studio
Есть проект libjson-rpc-cpp . Готовый фреймворк для Windows содержит в себе библиотеки расширения ".a" . Как написано, они тестили проект на Windows 7 при помощи MinGW32. Каким образом мне можно подключить эти библиотеки к с++ проекту в VS? Стандартными способами, которыми я подключаю библиотеки расширения .lib эти библиотеки (.a) не подключаются. То есть VS ругается на неразрешённый внешний символ. Ошибка 9 error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall jsonrpc::HttpClient::HttpClient(class std::basic_string,class std::allocator > const &)" (??0HttpClient@jsonrpc@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции _wmain E:\Projects\A1CF service projects\A1CF service У меня такое уже было. Решил вопрос, добавив исходники нужные в проект. В итоге, вопросы: Эти библиотеки (.a) реально использовать не на Linux? Эти библиотеки (.a) собраны при помощи MinGW? Каким образом их можно использовать в проекте VC++? Может быть можно конвертировать или скомпилировать заново, чтобы сгенерировались .lib файлы? На Ubuntu я выкачал из git проект, собрал его. Думаю, можно изменить параметры CmakeLists.txt, чтобы генерировались .lib файлы. Но мб можно без этого использовать файлы .a расширения сразу в VC++ проекте?
Ответы
Ответ 1
Использовать библиотеки C++, которые собраны другим компилятором, в общем случае, нельзя. У разных компиляторов могут быть разные имена(name mangling) и т.п. Поэтому нельзя даже использовать библиотеку, которая была собрана в другой версии MSVC. Про MinGW я вообще молчу. Выход здесь это собрать библиотеку самостоятельно. Для этого нужно запустить cmake с нужным генератором. Список всех генераторов можно получить, запустив cmake без параметров в консоли. Вот так, к примеру, как будет выглядеть генерация solution для MSVC2013 x64: cmake -G "Visual Studio 12 Win64"Ответ 2
Статическая библиотека .a, может быть использована только с MinGW32, т.к. создана им. Для использования Visual Studio вам необходимо собрать проект в Visual Studio. Также если у вас есть динамическая библиотека (dll) этого проекта вы можете создать из неё lib файл (инструкция: http://unick-soft.ru/article.php?id=56)
Комментариев нет:
Отправить комментарий