1

タイトルはただのからかいです。:-) それが不可能であることはわかっていますが、ここに私の問題があります。

私のアプリ (実際には DLL) は Boost を使用しています。また、Boost を使用する外部 API も使用します。外部 API はもちろん、必要なリリース Boost バイナリに沿って、リリース バイナリで提供されます。

リリース モードで DLL をコンパイル/リンクしても、問題はありません。私は自分のアプリを動的な方法 (BOOST_ALL_DYN_LINK) で Boost に正確にリンクしています。デバッグ モードでは、DLL をロードできません。Boost が原因かどうかはわかりませんが、Windows は 2 つの Boost (外部ライブラリによって呼び出されるリリースと、私のコードによって呼び出されるデバッグ) での作業を好まないのではないかと思います。

自分のコードをリリース Boost と静的にリンクすると、うまく機能しますか?

イベント ビューアーには何もないので、CRT とは関係ないと思います。

Visual Studio 2005 SP1 を使用しています。

ありがとう。

4

1 に答える 1

0

自分のコードをリリース Boost と静的にリンクすると、うまく機能しますか?

はい、それは私が期待することです-静的にリンクすると、バイナリにブーストの「コピー」が得られ、独自のブーストのニーズに合わせてブーストDLLがロードされることはありません..外部ライブラリはそのリリースDLLに喜んでリンクします。ただし、アプリケーションによって呼び出されるパブリック API で外部ライブラリが実際に boost を使用している場合、これは機能しません。この場合、問題を解決することはできません。ブースト機能を期待する API を呼び出す場合、ブースト ビルドは API の実装のブーストと一致する必要があります。

于 2010-01-15T16:27:09.140 に答える