Какие параметры компиляции я должен использовать для связи с Boost, используя cl.exe? - PullRequest
0 голосов
/ 01 октября 2011

У меня есть программа, которую я хотел бы скомпилировать, используя cl.exe в командной строке.Эта программа зависит от некоторых библиотек Boost, с которыми я не могу связать.

Я получаю ошибку:

cl /Fosamples\proxy\proxy.obj /c samples\proxy\proxy.cpp /TP /O2 /EHsc 
  /DBOOST_ALL_NO_LIB /DBOOST_THREAD_USE_LIB /DBOOST_SYSTEM_USE_LIB 
  /DBOOST_USE_WINDOWS_H /DTAP_ID=\"tap0901\" /D_WIN32_WINNT=0x0501 /MD /nologo 
  /Isamples\proxy /Iinclude proxy.cpp
link /nologo /MD /OUT:samples\proxy\proxy.exe /LIBPATH:samples\proxy
  /LIBPATH:lib asiotap.lib libboost_system-vc100-mt-1_47.lib
  libboost_thread-vc100-mt-1_47.lib ws2_32.lib gdi32.lib iphlpapi.lib
  advapi32.lib samples\proxy\proxy.obj
LINK : warning LNK4044: unrecognized option '/MD'; ignored 
  asiotap.lib(bootp_builder.obj) : error LNK2001: unresolved external
  symbol "class boost::system::error_category const & __cdecl 
  boost::system::system_category(void)"
  (?system_category@system@boost@@YAAEBVerror_category@12@XZ)

Я скомпилировал Boost, используя следующую командную строку, изКомандная строка x64 MSVC:

.\b2.exe install toolset=msvc --prefix=C:\Boost-VC-x64

Если я загляну внутрь libboost_system-vc100-mt-1_47.lib, я вижу, что:

?system_category@system@boost@@YAABVerror_category@12@XZ

Экспортируется.Но если вы посмотрите внимательно, это немного отличается от ошибки в моих ошибках компиляции:

?system_category@system@boost@@YAAEBVerror_category@12@XZ // The symbol I miss
?system_category@system@boost@@YAABVerror_category@12@XZ  // The exported symbol

Полагаю, мне следует либо изменить параметры Boost, либо параметры компиляции, но я не могу понять, что именно нужно изменить.Любая подсказка?

Большое спасибо.

1 Ответ

0 голосов
/ 01 октября 2011

После некоторых исследований я понял, что скомпилировал Boost для платформы x86, где я связывался с двоичным файлом x64.

Я подумал, что компиляции Boost в командной строке Visual Studio x64 достаточно, но на самом деле у вас естьуказать:

.\b2.exe install toolset=msvc address-model=64 --prefix=C:\Boost-VC-x64

Чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...