C# ActiveX的.NET使用者引发TargetParameterCountException 我有一个.NET(3.5 W/DEV Studio 2008)应用程序,它拥有一个Visual Active X(用C++ W/DEV Studio 2003编写)。可以访问所有源,但无法轻松将活动X控件移动到2008年
这在过去很管用。对activex控件进行了一些更改,现在,在activex上调用一个方法时,我100%的时间都会得到TargetParameterCountException。活动X方法的签名为:C# ActiveX的.NET使用者引发TargetParameterCountException 我有一个.NET(3.5 W/DEV Studio 2008)应用程序,它拥有一个Visual Active X(用C++ W/DEV Studio 2003编写)。可以访问所有源,但无法轻松将活动X控件移动到2008年,c#,.net,c++,com,activex,C#,.net,C++,Com,Activex,这在过去很管用。对activex控件进行了一些更改,现在,在activex上调用一个方法时,我100%的时间都会得到TargetParameterCountException。活动X方法的签名为: LONG CMyActive::License(LPCTSTR string1, LPCTSTR string2, LONG long1, LPCTSTR string3, LPCTSTR string4); 在reflector的对象浏览器中查看该方法时,.NET将其视为: public virt
LONG CMyActive::License(LPCTSTR string1, LPCTSTR string2, LONG long1, LPCTSTR string3, LPCTSTR string4);
在reflector的对象浏览器中查看该方法时,.NET将其视为:
public virtual int License(string string1, string string2, int long1, string string3, string string4)
为了演示的目的,我重命名了参数(boss对任何代码都会感到不安)。我留下了方法名,因为它可能是相关的
在这项工作之前有方法调用。我只是不明白为什么我会突然出现这种异常。HRESULT为0x8002000e,快速搜索似乎表明这是一个常规结果
谢谢大家的阅读
编辑
谢谢你的指点。知道别人感到困惑是一种安慰。奇怪的是,这确实奏效了。此行为在重建活动X后突然出现。没有接口或其他IDL更改。它可以在多台机器上运行,而不仅仅限于一个开发盒之类的设备
编辑2
对于S&G,我添加了一种新方法
LONG CMyActive::XXXLicense(LPCTSTR string1, LPCTSTR string2, LONG long1, LPCTSTR string3, LPCTSTR string4);
重建了一切,现在我可以调用新方法。。。这闻起来像是编译器和/或.NET的COM互操作性层中的错误 HRESULT是
DISP_E_BADPARAMCOUNT
(谷歌搜索比“0x8002000e”更好)
似乎其他人也遇到了这个问题: