Использование одновременно Boost в режиме выпуска и отладки - PullRequest
1 голос
/ 15 января 2010

Название только для дразнить. :-) Я знаю, что это невозможно, но вот моя проблема.

Мое приложение (на самом деле DLL) использует Boost. Он также использует внешний API, который также использует Boost. Внешний API, конечно, предоставляется в виде двоичного файла выпуска, помимо необходимых двоичных файлов Boost для выпуска.

Когда я компилирую / связываю свою DLL в режиме выпуска, у меня нет проблем. Точно я динамически связываю свое приложение с Boost (BOOST_ALL_DYN_LINK). В режиме отладки я не могу загрузить свою DLL. Я не уверен, что это из-за Boost, но я подозреваю, что Windows не любит работать с двумя Boost (выпуск, вызываемый внешней библиотекой, и отладочный, вызываемый моим кодом).

Будет ли это работать лучше, если я статически свяжу свой код с выпуском Boost?

Я не думаю, что это связано с CRT, потому что у меня ничего нет в Просмотрщике событий.

Я использую Visual Studio 2005 SP1.

Спасибо.

1 Ответ

0 голосов
/ 15 января 2010

Будет ли это работать лучше, если я статически свяжу свой код с выпуском Boost?

Да, это то, что я ожидал - если вы статически создадите ссылку, вы получите ускоренную «копию» в вашем двоичном файле, и не будет загружена дополнительная DLL-библиотека для ваших собственных нужд повышения… внешняя библиотека с радостью свяжется с ее выпуском DLLs. Однако это не будет работать, если внешняя библиотека фактически использует boost в своем публичном API, вызываемом вашим приложением! В этом случае вы не сможете решить проблему. Если вы вызываете какие-либо API-интерфейсы, ожидающие повышения, ваша расширенная сборка должна соответствовать ускорению реализации API.

...