以下是我的链接命令:
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中指定它们时,编译器会忽略这些选项。
由于
答案 0 :(得分:2)
下载Windows Dependency Walker的副本,将其启动并加载新制作的dll。
它将显示您的dll导入的所有DLL。如果其中一个导入的名称类似于msvcr<blah>.dll
(例如,msvcrt.dll
或msvcr90.dll
- 你得到了图片),那么它就是在dll中使用c-runtime(顺便提一句) ,是dll推荐的事情)。
答案 1 :(得分:2)
您的代码段仅显示构建的DLL,它没有说明使用DLL的程序。哪种方式可以选择使用DLL。
如果你不知道,那么一个简单的方法就是在EXE上运行Dumpbin.exe /imports
。您将看到输出中列出的实际使用的DLL导出。如果您没有看到任何内容,则只能动态加载DLL。或者完全没有。调试器显示加载到进程中的DLL的通知,您将在“输出”窗口中看到它们。