COM 编程问题。帮帮忙吧。急。我都要疯了
开发环境:vs2005, c#
我现在遇到了一个问题,我使用一个第三放的现成COM组件, XXX.TLB,在把这个文件添加到项目后,一开始还正常,
调用一些函数什么的都没有问题。现在忽然碰到了一个问题,弄了三四天了,还是没有结果。
这个问题是有一部分函数不好用。这些函数在开发环境的对象浏览器中原形看到如下:
object GetLinks();
但是在手中已有的文档中,原形如下:
IDispatch **GetLinks();
文档对该函数的说明是:返回值是一个指向 Links 对象指针的指针。
在程序中我是这样使用的:
Links linkset;
linkset = (Links)GetLinks(); <----- 就是这行出错
我把报错的异常信息贴在了下面:
---------------------------------------
在 xxxx.Form1.ConnectServer() 位置 D:\My Documents\Visual Studio 2005\Projects\xxxx\xxxx\Form1.cs:行号 72
System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“Links”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。
在 xxxx.Form1.ConnectServer() 位置 D:\My Documents\Visual Studio 2005\Projects\xxxx\xxxx\Form1.cs:行号 72
---------------------------------------
现在实在是不知道怎么弄了。能想到的方法我都想到了,可就是解决不了。我都要疯了。各位牛人,帮帮忙吧。真的要疯了