Невозможно собрать 64-битные динамические библиотеки Boost, только статические - PullRequest
3 голосов
/ 26 августа 2011

Я недавно приобрел Visual Studio 2010 через Dreamspark, поэтому теперь я могу компилировать 64-битные приложения и библиотеки.Затем я скомпилировал библиотеки Boost 1.47 с Bjam, используя следующую строку для ввода:

.\b2 -a -d 0 -q -j 4 -d 0 --variant=debug,release --link=shared,static --threading=multi --address-model=32 --toolset=msvc-10.0

Когда я это сделаю, я получу 4 каждой библиотеки (static-debug, dynamic-debug, static-release, dynamic-релиз).После того, как они скомпилированы, я перемещаю их в другой каталог, называемый win32libs.Затем я использую ту же самую строку для компиляции 64-битных версий, но переключаю модель адреса на 64 (я знаю, что они почти идентичны, потому что я копирую и вставляю из того же текстового документа, который я сделал, чтобы упростить их компиляцию).Когда я захожу в свой каталог stage после 64-битной компиляции, я вижу только .lib, но не .dll.Это проблема с тем, что я делаю, или каким-то образом 64-битные dll не поддерживаются?

Спасибо

1 Ответ

6 голосов
/ 26 августа 2011

Параметры, изменяющие способ компиляции Boost (в отличие от тех, которые просто управляют выполнением b2), называются «функциями» и не должны начинаться с тире в командной строке. В вашем примере это:

  • вариант
  • ссылка
  • потоковая
  • адрес-модель
  • Набор инструментов

Библиотеки, которые он генерирует, будут названы в соответствии с схема именования библиотек для Boost в Windows . lib * .lib - статические библиотеки; другие * .lib являются библиотеками импорта для соответствующих DLL.

...