MSVC - boost :: python статическая ссылка на .dll (.pyd) - PullRequest
1 голос
/ 08 ноября 2010

Я получил проект VS10. Я хочу построить некоторый код C ++, чтобы я мог использовать его в Python. Я следовал учебному пособию по повышению и получил его работать. Однако VS продолжает ссылаться на boost-python-vc100-mt-gd-1_44.lib, но это просто оболочка, которая вызывает boost-python-vc100-mt-gd-1_44.dll. Вот почему мне нужно скопировать .dll с моим файлом .dll (.pyd). Поэтому я хочу связать boost: python статически с этим файлом .dll (.pyd). Но я просто не могу найти какой-либо вариант конфигурации в VS или в руководстве по компилятору и компоновщику. Самое странное, что у меня есть один старый проект, использующий boost :: filesystem с той же самой конфигурацией, но этот проект ссылается на libboost-filesystem - *. Lib, которая является статической lib, так что все в порядке. Я пару часов гуглил безуспешно, и это сводило меня с ума.

Спасибо за любую помощь или предложение.

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

Вы, вероятно, не хотите этого делать.Статически связанный Boost Python имеет ряд проблем и недостатков, когда импортируется более одной библиотеки Boost Python.«Но у меня есть только один», - говорите вы.Можете ли вы гарантировать, что у ваших пользователей не будет другого?Что вы можете использовать другой в будущем?Придерживайтесь DLL.Распространение другой DLL на самом деле не такая уж большая проблема.Просто поместите его рядом в том же каталоге.

0 голосов
/ 08 ноября 2010

Какие библиотеки связаны, зависит от настроек вашего проекта. Есть две возможности: Вы можете построить против

  1. статический
  2. динамически

связанных версий библиотек c-runtime. В зависимости от того, какая опция выбрана, усиление отправляет компоновщику правильный #pragma. Эти параметры должны быть установлены последовательно во всех проектах, составляющих вашу программу. Так что перейдите к «свойствам -> c ++ -> генерация кода» (или аналогичным, я просто догадываюсь, что сейчас VS не работает и не работает) и убедитесь, что выбран правильный вариант (последовательно) Конечно, вы должны скомпилировать библиотеки наддува в необходимом формате, прежде чем ...

...