0

/MT オプションでコンパイルされた ac/c++ DLL を作成しました。別のプログラムによってロードされます。Visual Studio 2012(ExpressまたはProfessional、どちらもOK)がインストールされている限り、これはすべて正常に機能しています(インストール済み、実行する必要はありません):外部プログラムは問題なくDLLをロードします。これまでのところ、Visual Studio 2012 がインストールされていない別のマシンに移動すると、読み込まれません。「依存関係がありません...」というエラーが表示されます。

私は疑問に思います: VS2012 がインストールされているのは、それなしでは利用できない環境ですか? VS2012なしでこれを機能させるにはどうすればよいですか? VCRedist* が必要な環境をインストールしないのはなぜですか?

注: - dumpbin /DEPENDENTS mydll.dll を実行しても、インストールして利用できない依存関係は表示されません...また、テスト用に VS2012 をインストールするとすぐに、変更なしで実行されます - 複数のシステムでこれをテストしました。すべての種類の vcredist... バージョンをインストールして、すべてが問題ないことを確認しました。VS2012がインストールされていない限り起動しません(VS2010などでは試していませんが、おそらくそれも問題ありません)

4

1 に答える 1

0

デバッグDLLを使用しないことを何度も確認したと本当に思っていました。これまでのところ、私は1つを逃しました!zeromq libzmq-..-gd...dll がノーリターン ポイントであることが判明しました。gd はデバッグ バージョンを示し、私の dll はそこから関数を使用していました。インクルードと .libs を「gd」なしで libzmq...dll に変更すると、正しくロードされるようになりました。もちろん、vcredist パッケージなどのインストールに関するすべてのコメントも正しくありましたが、この場合は問題ではありませんでした (インストールしたため)。デバッグでコンパイルされた dll がいくつかあるはずだと指摘していただき、ありがとうございます。

于 2013-03-22T17:14:42.420 に答える