我有一个x64服务器,因为我的库编译为AnyCPU,在x64下运行.我们需要访问在x86下注册的COM组件.我不太了解COM,我的谷歌搜索让我无处可去.
问题:对于COM组件,我可以使用从x64到x86的符号注册表链接吗?我是否还需要在x64下注册COM组件?我可以(这里的任何陈述......)?
谢谢.
我知道我们可以通过定位AnyCPU来编译.NET应用程序,这将导致在32位操作系统中运行32位,在64位操作系统中运行64位.
然而,在64位操作系统上有一个报告错误*,我的应用程序出错并为此提供了解决方案,我需要针对x86.
现在我的问题是:即使你的代码要在x64中运行,定位x86真的很糟糕吗?我们在谈论什么样的表现?(我的应用程序是CPU密集型的,但很难想出来)
毕竟.NET Framework将在32位运行,这对我来说听起来不好,而不是采用x64 CPU**的完全寻址能力.
*我不记得错误,但解决方案专门针对x86,并解决了问题.
**我不确定它是否有任何重要但我的应用程序不使用任何Int64变量.
我有一个公开COM接口的本机c ++ COM服务器.我可以成功使用本机c ++客户端应用程序来获取和使用服务器中公开的接口.
当我使用.net客户端引用服务器时,我收到错误:
由于以下错误,检索具有CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}的组件的COM类工厂失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE)).
...即使COM服务器启动并成功运行(启动只需要大约1或2秒).
但是只有在服务器注册为本地服务器时才会出现上述错误.如果我将服务器注册为Windows服务,.net客户端可以成功获取并使用这些接口.
我正在以Windows 7 64位的管理员身份做这一切.COM服务器位于本地计算机上.
我检查了下面的线程,但没有提供答案: 由于以下错误,检索CLSID {XXXX}组件的COM类工厂失败:80080005
到目前为止,在这一天花了一天半......可能是什么问题?
更多信息:
我已经与vs2005合作了.我最近更新到vs2010,现在我遇到了这个问题.我尝试使用相同的结果构建.net客户端定位框架2.0,3.5和4.0.
谢谢