使用 32 位 COM 组件编译代码并在 64 位系统上使用时出现 System.OutOfMemoryException

发布于 2024-12-07 23:39:47 字数 230 浏览 1 评论 0原文

我的代码在 32 位系统上运行良好。我只是引用一个读取/写入 xml 的 COM 组件。因此,当我收到以下错误时,我尝试在“X86”中编译,然后在 64 位系统上运行。

发生以下异常:System.OutOfMemoryException:由于以下错误,从 IClassFactory 创建 CLSID 为 {59D5FDED-B01B-47F4-BBBC-56941A2F4873} 的 COM 组件实例失败:8007000e。

My code works fine on a 32 bit system. I am simply referencing a COM component that reads/writes xml. So, I tried compiling in 'X86' and then running on a 64 bit system when I received the error below.

The following exception occurred: System.OutOfMemoryException: Creating an instance of the COM component with CLSID {59D5FDED-B01B-47F4-BBBC-56941A2F4873} from the IClassFactory failed due to the following error: 8007000e.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅笑轻吟梦一曲 2024-12-14 23:39:47

随机建议:

  • 将调试器附加为本机,看看是否有有趣的本机异常。
  • 尝试让你的exe“不知道大内存空间”。
  • 验证应用程序是否以 32 位版本加载。
  • 尝试使用本机代码创建组件以验证其是否正确安装在系统上。

注意:如果您的 COM 组件使用 MSXML 来处理 XML,则由于内存管理之间的不兼容,不支持将其加载到托管应用程序中。它不太可能导致您所看到的问题,但更多的是供一般参考。

Random suggestions:

  • Attach debugger as native and see if there are interesting native exceptions.
  • Try to make your exe "not large memory space aware".
  • Verify if app loads as 32 bit one.
  • Try to create the component with native code to verify it is properly installed on the system.

Note: if your COM component uses MSXML to work with XML loading it into managed application is not supported due to incomaptibilities between memory management. It is unlikely to be cause problem you are seeing, but more for general reference.

清晨说晚安 2024-12-14 23:39:47

对我来说,发生这种情况是因为 C++ COM 组件正在调用 C# 库并且不处理它引发的异常。

For me this was happening because the C++ COM Component was calling a C# library and not handling the exception it raised.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文