.net 调用C函数并获取C中的字符串输出

.net 调用C函数并获取C中的字符串输出,.net,c,marshalling,.net,C,Marshalling,我想在C语言文件中有一个函数,它可以将字符串作为输出返回,我想从托管代码(即C)中访问该函数,并将该字符串作为返回值。任何与此相关的帮助或链接对我来说都是非常好的 您将使用调用C函数。基本上,您将声明一个extern方法: 获取正确封送处理的语义有点棘手,但是本页应该让您开始学习。这是公共库中的方法还是自定义库中的方法?更常见的可以在上找到。如果没有,MSDN有一篇关于使用的文章,可能会很有用。谢谢您的回复。方法将位于自定义库中,看起来有点像-void TESTchar optVal[]{},所

我想在C语言文件中有一个函数,它可以将字符串作为输出返回,我想从托管代码(即C)中访问该函数,并将该字符串作为返回值。任何与此相关的帮助或链接对我来说都是非常好的

您将使用调用C函数。基本上,您将声明一个extern方法:


获取正确封送处理的语义有点棘手,但是本页应该让您开始学习。

这是公共库中的方法还是自定义库中的方法?更常见的可以在上找到。如果没有,MSDN有一篇关于使用的文章,可能会很有用。

谢谢您的回复。方法将位于自定义库中,看起来有点像-void TESTchar optVal[]{},所以我想在我的C代码中获取optVal。@Vikram:void函数不返回任何内容。您要检索的C库中函数的签名是什么?我将在此基础上为您编写一个导入。函数的签名类似于void Testchar*optVal{}。请告诉我如何在我的C代码中获取optVal的值。非常感谢Brad在此之前的帮助,我可以使用以下导入函数获取C中的输出引用-[DllImport@C:\Test\calledll.dll,CallingConvention=CallingConvention.Cdecl,CharSet=CharSet.Ansi]public static extern void SnmpTest[MarshalAsUnmanagedType.LPStr]StringBuilder sb;恕我直言,您是否尝试过在网络中搜索它?是的,我尝试过搜索它,但由于我不擅长C语言,这就是为什么我无法在C语言中创建一个返回字符串的函数以及我可以在C中访问该字符串作为输出的函数的原因
[DllImport("yourlibrary.dll")]
static extern YourFunctionName(...)