Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#上使用COM对象的指针?_C#_.net - Fatal编程技术网

如何在C#上使用COM对象的指针?

如何在C#上使用COM对象的指针?,c#,.net,C#,.net,全部 我正在尝试在.net项目上使用我的旧dll文件。 因此,我使用Windows SDK中的[tlbimp.exe]util将这个非托管COM对象转换为托管对象 但是,有一个方法返回一个对象作为返回值,但是每当我尝试使用它时, 我的程序产生了一个错误 奇怪的事情如下: //Object[] item = s.GetObjects(); //this generates an type error Object item = s.GetObjects(); //this works okay S

全部

我正在尝试在.net项目上使用我的旧dll文件。 因此,我使用Windows SDK中的[tlbimp.exe]util将这个非托管COM对象转换为托管对象

但是,有一个方法返回一个对象作为返回值,但是每当我尝试使用它时, 我的程序产生了一个错误

奇怪的事情如下:

//Object[] item = s.GetObjects(); //this generates an type error
Object item = s.GetObjects(); //this works okay
System.WriteLine(items); //prints System.Object[] rather than System.Object.
它似乎返回一个包含对象数组的指针。不是吗?

请告诉我如何处理这个问题,有关于这个问题的文档吗?

你能试试这个吗

Object[] item = s.GetObjects() as Object[];

考虑为代码< > GETObjs< /Cord>调用添加相应的行窗体IDL。仅仅看C代码是不可能解释应该发生什么的。谢谢:D请看下面的评论。在这种情况下,千万不要使用as。只需强制转换,就可以得到一个好的异常,而不是糟糕的NRE或未诊断的错误。哦,它可以工作,但现在它显示为“System.\uuuuComObject”,并且它只有一个1元素。它表示“进入CLR且不支持IProvideClassInfo或未注册任何互操作程序集的COM组件将被包装在\uuuuComObject类型中。”我需要更多的调查。