c# - ActiveX 的 .NET 使用者抛出 TargetParameterCountException

标签 c# .net c++ com activex

我有一个 .NET (3.5 w/Dev Studio 2008) 应用程序,它承载一个可视化 Active X(用 C++ w/Dev Studio 2003 编写)。可以访问所有源,但不能轻松地将 Active X 控件移动到 2008。

这在过去工作得很好。对 Active X 控件进行了一些更改,现在,当在 Active X 上调用一个方法时,我会在 100% 的时间内收到 TargetParameterCountException。 Active X 方法的签名是:

LONG CMyActive::License(LPCTSTR string1, LPCTSTR string2, LONG long1, LPCTSTR string3, LPCTSTR string4);

在反射器的对象浏览器中查看方法时,.NET看到的是:

public virtual int License(string string1, string string2, int long1, string string3, string string4)

出于演示目的,我重命名了参数(老板对任何代码都感到紧张)。我留下了方法名称,因为它可能是相关的。

在该工作之前有方法调用。我只是看不出为什么我突然得到这个异常(exception)。 HRESULT 是 0x8002000e,快速搜索似乎表明这是一个通用的结果。

感谢大家的阅读。

编辑

多谢指点。知道别人感到困惑是一种安慰。奇怪的是,这确实有效。此行为在重建 Active 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”更适合谷歌搜索)。

似乎其他人也遇到过这个问题:

http://www.codeguru.com/forum/showthread.php?t=96353

http://forums.devx.com/showthread.php?t=85215

关于c# - ActiveX 的 .NET 使用者抛出 TargetParameterCountException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789096/

相关文章:

c# - 使用 DllImport 从 C# 调用 Win API 的访问冲突

c++ - 告诉 GCC "I want to use SSE4.1, but ONLY in the places I want!"

.net - COM 库的属性/方法描述

c# - 我可以从命令行重命名 C# 符号吗?

c# - 用于创建工作项模板的 TFS 客户端 API?

c# - RESTful API 命名资源和 Controller 设计

.net - 如何将 Visual Studio 安装到可移动驱动器?

C++:读取文件中的错误

c++ - 无法在线程中专门化函数模板

c# - FluentAssertions : ShouldBeEquivalentTo method still invokes Object. 等于()?