Я пытаюсь статически связать с библиотекой С++ под Poco в Windows с помощью инструментов командной строки Visual Studio 2008.
Я создаю свою программу с помощью
cl /I..\poco\lib /c myapp.cpp
link /libpath:..\poco\lib myapp.obj PocoNet.lib
Это приводит к тому, что exe для выполнения требует PocoNet.dll и PocoFoundation.dll.
Я потратил некоторое время на чтение ссылок на Windows и узнал, что cl /MT
статически ссылается на стандартную библиотеку, а cl /MD
- динамически.
Я попытался указать /MT
, но это ничего не изменило; моему приложению все еще требуются DLL Poco. (Я также подозреваю, что /MT
является поведением по умолчанию.)
Посмотрев под ..\poco\lib
, я обнаружил, что есть также PocoNetmt.lib, но указав, что вместо PocoNet.lib произошла куча ошибок LNK2005 ( "уже определена" ):
msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) already defined in exp.obj
Затем я попытался выполнить стекирование на большее количество флагов:
-
/verbose:lib
: полезно для просмотра того, что происходит -
/Zl
: те же результаты, что и раньше -
/nodefaultlib:libcmt.lib /nodefaultlib:msvcprt.lib
: получил эту ошибку:PocoFoundationmt.lib(Exception.obj) : warning LNK4217: locally defined symbol [email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected] (public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)) imported in function [email protected]@@[email protected]@@Z
-
полностью отбросив
.lib
, как предлагается здесь: такая же ошибка, как указано выше
Я также пробовал некоторые комбинации из вышеперечисленного, все безрезультатно.
Любые подсказки будут очень признательны. Но столь же полезными были бы любые указатели на ресурсы, которые полезны для отладки (или изучения) этих типов проблем.