2011-12-26 12 views
0

私はVisual Studio 2010でDLLを構築していますが、fprintffreadのような単純なC関数を使用していて、デフォルトでmsvcr100.dllにリンクしています。DLLのCRTへの依存を取り除く

このDLLは、別のCRTバージョン(たとえば、msvcr90.dll,msvcrt.dll)を使用している可能性があるアプリにロードされます。

dllが読み込まれる前にCRTを読み込むことがわかっているので、msvcr100.dllの依存関係を削除して、アプリケーションによって読み込まれたCRTのC関数を使用できますか?

+0

[DLLをビルドするときは、どのタイプのCRTにリンクすればよいですか?](http://stackoverflow.com/questions/5262519/when-building-a-dll-what-type-of-crt-should-i-i-)-) –

答えて

0

最後に、ターゲットアプリケーションで使用されている最小公約数のCRTバージョンであるmsvcr90.dllに対してDLLを構築することにしました。

これは、Visual C++ 2008 Express(無償)で入手可能なMSVCツールチェーンを使用して行いました。

は、私はあなたが、しかし、msvcr90.dllはので、私は実行可能な生成することができませんでした新しいスタイルのSxSアセンブリである(mingw-rtgcc -specs=msvcr**を参照)にリンクしているCRTバージョンを指定することができますmingwの/ gccのツールチェーンを、しようとしました適切に実行する。

msvcr**.dllとのリンクをスキップすることを検討する価値があります。 this postおよびVC/include/delayhlp.cppを参照してください。