我有一个C ++ / CLI程序集,它需要msvcr120.dll
(这是VC ++可再发行组件包2013的一部分)才能运行。我通过使用工具监视进程在运行期间尝试加载的文件来发现这一点。有没有办法通过查看DLL而不运行它来获得所需的VC ++运行时版本?我尝试使用ildasm.exe
来查看元数据,但没有找到相关信息。
有什么建议吗?非常感谢。
答案 0 :(得分:3)
如果它是混合模块(/clr
),那么C运行时将显示其加载时依赖性:
dumpbin /dependents mymodule.dll
如果它是纯模块(/clr:pure
),那么对C运行时的调用将通过P / Invoke进行。您可以反汇编模块并搜索P / Invoke包装器:
ildasm /text mymodule.dll | findstr pinvokeimpl
这将列出可以动态加载以满足P / Invoke调用的模块。如果模块依赖于C运行时,您将看到它显示多次(您可以通过搜索" msvcr"或" msvcp"进一步过滤列表;如果您" 39;对Visual C ++库特别感兴趣。)
答案 1 :(得分:0)
只是为了提供替代方案,您也可以使用名为Dependency Walker
的工具找到相关信息,您可以从here获取