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



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

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

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

我在stackoverflow和其他一些网站上搜索过,但找不到任何与此匹配的内容。有什么想法我做错了什么,或者我如何让它返回一个值吗?

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

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

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

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

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

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

DLL的文档似乎不正确,并给出了我需要的check函数,但实际上有一个名为checkAllocate的函数,这是我需要使用的函数。抱歉各位-非常感谢您的时间和努力

最新更新