我正在使用c#来构建一些库,然后在Matlab 64bit中使用这些库。 c#库已编译为64位,因此我们可以从Matlab中使用它。 c#库使用互操作来调用COM组件,该组件是旧的32位代码。在C#中运行测试时,一切正常,但是如果我使用Matlab中的库,则会收到以下错误:
消息:无法将类型为“ ...”的COM对象转换为接口类型为“ ...”。该操作失败,因为 由于以下原因,在COM组件上对具有IID'{...}'的接口的QueryInterface调用失败 错误:未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。 来源:mscorlib
在我看来,运行时正在寻找COM类的64位,但是我不明白为什么,但是afaik visual studio 2017仍然是32位,这就是为什么它选择正确的COM。欢迎任何帮助。
更新
我尝试使用加载的64位测试运行代码,但遇到相同的错误,因此它是从VS运行的,因为它是32位的。确定了这一点之后,是否有一种方法可以强制64位执行上下文调用32位COM组件?
谢谢