0

私のプログラムは、Microsoft の再配布パッケージに依存しています。具体的には、MSVCR100.dll に依存しています。

推奨されるアプローチは、プログラムを実行する前に再配布パッケージをインストールすることです。しかし、私のプログラムは非常に小さく (約 1MB)、vcredist.exe は約 5MB で、インストーラーには少し大きすぎます。

別の方法として、Microsoft のライセンスに従って、dll を\VC\redist\x86\Microsoft.VC100.CRT\アプリケーション フォルダーのサブフォルダー ( ) にインストールすることができます。したがって、私のアプリケーションディレクトリは次のようになります。

MyAppFolder\a.exe
MyAppFolder\lib\a.dll
MyAppFolder\VC\redist\x86\Microsoft.VC100.CRT\MSVCR100.dll

私の質問は、a.dll が別のフォルダーにある MSVCR100.dll を見つけるようにするにはどうすればよいですか?

4

2 に答える 2

0

私の問題を解決できるAddDllDirectory関数を見つけました。

はい、CRT を静的ライブラリとしてリンクできますが、私の場合、CRT に依存するライブラリがいくつかあります。つまり、すべての dll に MSVCR100.dll のコピーがあります。

于 2012-10-17T06:07:42.920 に答える
0

CRT をスタティック ライブラリとしてリンクすることを検討してください。MSVCRxxx.dll には依存しません。

ただし、EXE/DLL は大きくなります。

http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.100%29.aspx

http://msdn.microsoft.com/en-us/library/aa984514.aspx

このソリューションは、プロジェクトに 1 つの EXE/DLL が含まれている場合に適していますが、より大きなプロジェクトの場合は、MSVCRT マージ モジュールを内部に含む MSI パッケージを作成できます。

于 2012-10-16T07:17:55.207 に答える