6

MSVCR80 に依存し、クリーンアップが必要なリソースを割り当てるサードパーティの DLL があります。ライブラリは、これを行うための関数を公開していませfree。代わりに、同じランタイム ライブラリを読み込んで、free関数を手動で呼び出す必要があります。

回避策として、正しいランタイムをロードして関数を公開する「ラッパー」DLL を作成しようとしていfreeます。この DLL は Visual Studio 2010 を使用して作成され、別のランタイム ライブラリに依存しています。マニフェストの問題が原因であると思われるエラーR6034LoadLibrary("msvcr80.dll")で失敗します。

を使用して msvcr80.dll をロードすることさえ可能LoadLibraryですか? マニフェストを作成して DLL に埋め込み、msvcr80.dll をラッパー DLL と同じディレクトリに保存する必要がありますか?

これがサードパーティのライブラリの欠陥であることは認識していますが、このバージョンにかなりこだわっています。ベンダーにこれを修正してもらうことは、おそらくオプションではありません。

4

1 に答える 1

3

おそらくより良い解決策がありますが、他のすべてが失敗した場合は、コンパイラのバージョン8.0を使用するVC ++ 2005 Express Edition(=無料、著作権侵害は不要)のコピーをどこかに見つけることができます。 ;)dll。

次に、それを使用してラッパーdllを構築します。これfreeにより、CRTによって提供されるものが呼び出されます(dllバージョンを使用していることを再確認してください)。

于 2011-09-14T16:31:08.140 に答える