3

以下は私のリンクコマンドです:

Running Mkbootstrap for XML::SAX::ExpatXS ()
    C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 ExpatXS.bs

link -out:blib\arch\auto\XML\SAX\ExpatXS\ExpatXS.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf  -libpath:"C:\Perl\lib\CORE"  -machine:x86 ExpatXS.obj -def:ExpatXS.def
Creating library blib\arch\auto\XML\SAX\ExpatXS\ExpatXS.lib and object blib\arch\auto\XML\SAX\ExpatXS\ExpatXS.exp

使用されるコンパイル フラグは次のとおりです。/Zi /GF /MD -c

この dll が静的または動的にリンクされているかどうかを知りたいです。http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspxを参照しましたが、makefile でこれらのオプションを指定すると、コンパイラはこれらのオプションを無視します。

ありがとう

4

2 に答える 2

2

Windows Dependency Walkerのコピーをダウンロードして起動し、作成したばかりの dll をロードします。

dll がインポートするすべての DLL が表示されます。インポートの 1 つにmsvcr<blah>.dll(例: msvcrt.dll、またはmsvcr90.dll— 画像が表示されます) のような名前が付いている場合、それは dll で c-runtime を使用しています (ちなみに、これは dll で実行することをお勧めします)。

于 2013-04-08T13:24:11.463 に答える
2

あなたのスニペットは、DLLがビルドされていることを示しているだけで、DLLを使用するプログラムについては何も言いません。いずれかの方法で DLL を使用する選択肢があります。

よくわからない場合はDumpbin.exe /imports、EXE で実行するのが簡単な方法です。実際に使用されている DLL からのエクスポートが出力に表示されます。何も表示されない場合、DLL は動的にロードされている可能性があります。またはまったくありません。デバッガーは、プロセスに読み込まれる DLL の通知を表示します。それらは [出力] ウィンドウに表示されます。

于 2013-04-08T13:46:14.780 に答える