使用C#从C ++ DLL没有返回值

时间:2012-02-23 09:26:19

标签: c# com pinvoke

使用控制台应用程序,我正在使用c ++ com dll来调用函数。

我添加了已注册的DLL作为项目的参考,然后我实例化对象并调用该函数。 (我应该注意到,我并没有像其他人那样使用pinvoke)

我应该得到一个字符串作为结果,但我只是得到一个空字符串。我可以获得任何形式的输出的唯一方法是启用对非托管代码的调试,从中我可以看到它正在正确执行并返回结果。

我已经搜索了stackoverflow和其他一些网站,并且找不到与之匹配的内容。我有什么想法,或者我怎么能让它返回一个值?

编辑:根据要求,这是代码 -

COMMODCHECKLib.Modcheck mod = new COMMODCHECKLib.Modcheck();
string output = mod.check("123456");

2 个答案:

答案 0 :(得分:1)

我建议首先检查问题是否在C#代码或COM库中。为此,您可以使用例如一个VB脚本文件(.vbs),如

(test.vbs)
Set mod = CreateObject("COMMODCHECKLib.ModCheck")
WScript.echo(mod.check("123456"))

只需从命令行运行此脚本(输入test.vbs)。

如果这给出了所需的输出,至少你知道问题出在C#端。

答案 1 :(得分:0)

似乎DLL的文档不正确并且将检查函数作为我需要的函数,但事实上有一个名为 checkAllocate 的函数,它是一个我需要使用。道歉家伙 - 非常感谢你的时间和努力