C# 将CanoeCom服务器与C一起使用时出现的问题#

C# 将CanoeCom服务器与C一起使用时出现的问题#,c#,com,canoe,C#,Com,Canoe,我试图通过C#中的CanoeCom服务器在特定的CANoe配置中执行一些CAPL函数。但是我遇到了错误 在这里,我在CanoeCom服务器中声明两个类的对象:Application(打开CANoe配置)和CAPLFunction(在配置上运行一些CAPL函数,比如打开面板),只需按一个简单的Windows窗体中的按钮。代码如下: private void button1_Click(object sender, EventArgs e) { CANoe.Appli

我试图通过C#中的CanoeCom服务器在特定的CANoe配置中执行一些CAPL函数。但是我遇到了错误

在这里,我在CanoeCom服务器中声明两个类的对象:Application(打开CANoe配置)和CAPLFunction(在配置上运行一些CAPL函数,比如打开面板),只需按一个简单的Windows窗体中的按钮。代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
        CANoe.Application CANoe_big = new CANoe.Application();
        CANoe_big.Open(@"All_neu.cfg");

        CANoe.CAPLFunction Neu = new CANoe.CAPLFunction();

    }
当我在VisualStudio中键入这些函数时,没有显示任何错误。即使在运行程序时,表单也会显示,单击按钮,配置“All_Neu.cfg”也会打开。但在那之后,系统抛出这个错误:“类未注册,HRESULT:REGDB_E_CLASSNOTREG”。它在抛出错误时高亮显示声明CAPLFunction对象的行

这很奇怪,因为应该没有问题,对吧?我的意思是,CANoe配置正确打开,因此CANoe COM服务器处于活动状态

事实上,我注意到COM服务器中任何其他类的任何对象,如Bus或Write,都会导致相同的错误。配置确实打开了,但在那之后,什么也没有打开


你知道为什么会发生这种情况吗?

你不能创建一个自由浮动的空CAPLFunction对象

CAPL函数必须出现在您刚刚打开的配置中。在那之后你就可以拿到它了

var caplFunc = CANoe_big.CAPL.GetFunction("<functionname>");

检查CANoe文档中名为技术参考->COM接口->对象层次结构的部分。

这可能是x86与x64的问题,因为COM类注册对于每个环境都是分开的。例如,COM服务器在x86中运行,客户端为x64,反之亦然。
caplFunc.Call(...);