0

我在 ac# 类库项目中引用了一个 64 位 com interop dll 并有初始化它的代码,这个库用于 asp.net 项目。

由于业务层项目和 asp.net 在 c# 中,我已配置为适用于任何 CPU 平台。我也设置了

现在,当我尝试在我的业务层项目中初始化 com 类时,我得到以下错误。任何建议这个错误是什么以及为什么它提到无效的 Win32 应用程序,因为我已经将它覆盖到 64 位。

由于以下错误,从 IClassFactory 创建具有 CLSID {31DE5D69-1F5F-434D-8855-F627EAEB2404} 的 COM 组件实例失败:800700c1 不是有效的 Win32 应用程序。(来自 HRESULT 的异常:0x800700C1)。

谢谢

4

2 回答 2

2

无法从 x86 进程引用 x64 COM 库。如果您将配置设置为“任何 CPU”,则字长会在应用程序初始化期间终止,这意味着如果您在 x86 系统上启动应用程序将导致使用无法引用 x64 库的 x86 配置。

您需要创建一个 x64 库才能使用基于 x64 的 COM 服务器。在您的 IIS 配置中,应用程序池还需要使用 x64。但是,您应该避免在您的项目中使用“任何 CPU”,请参阅本文

于 2013-01-02T12:49:16.373 回答
0

我不得不在 Visual Studio 2012 的 64 位命令提示符中注册 dll,这将 dll 正确注册为 64 位,并且我能够在 c# 项目中使用它。

于 2013-01-16T07:31:40.920 回答