0

我有一个使用 dll 的 ironpython 应用程序。一些 dll 是用 c# 编写的,一个是托管 c++ 的。该应用程序在我的主机上运行良好,在任何包含 Visual Studio (2010) 安装的主机上运行良好。

当我尝试在没有 vs 的主机上运行这个应用程序时,它失败了。经过一番检查,我发现 Ironpython 无法加载 c++ dll。安装 vs - 应用程序运行良好。

我缩小了范围:安装后可以上传dll: -Microsoft 应用程序错误报告 -VC 9.0 Runtime(x86) -VC 10.0 Runtime(x86) -Microsoft Visual Studio 宏工具

我尝试安装 Microsoft Visual C++ 2010 Redistributable Package http://www.microsoft.com/download/en/details.aspx?id=5555 但没有成功。

  1. 为什么?安装 vs 时到底发生了什么,当我安装 Microsoft Visual C++ 2010 Redistributable Package 组件时不会发生这种情况?
  2. 如何监控使用 ipy 加载 dll 时出现的错误?

谢谢!

4

1 回答 1

1

用托管 C++ 编写的 DLL 将 DLL 用于其标准库。您可以将其更改为静态库。跟着这些步骤

  1. 在 Visual Studio 中打开项目属性(右键单击项目)
  2. 单击您的方式到配置属性> C++ > 代码生成
  3. 在右侧,找到 Runtime Library 并选择Multi-Threaded Debug (/MTd)
  4. 对发布版本执行相同操作,但这次选择Multi-Threaded (/MT)
  5. 全部重建

至于你的具体问题:

1.可再发行安装程序将复制系统路径中的 DLL。Visual Studio 也会做同样的事情。因此,如果它不起作用,请确保您拥有 32 位或 64 位二进制文​​件(与您的代码相同,而不是您正在运行的平台)。+如果您从控制台运行,请将其关闭并启动一个新的以获取更新的路径。

2.使用Dependency Walker。加载你的 DLL 会告诉你它在寻找什么,它应该足够了。要监视其运行时执行,请加载 IronPython。在“Profile”菜单中,选择“Start Profiling”并提供一个命令行来重现您的问题。

于 2012-04-08T13:20:28.623 回答