从C#传递字符串数组到c编程
我从C#.Net托管代码调用非托管C编程代码。 但我无法将字符串数组作为参数传递给C中的.Net函数:
dllmain(const int argc, const char *argv[]){}
请帮助我,我如何从C Sharp.Net调用此function
谢谢。
这是一种可以做到这一点的方法:
C#代码:
-
声明要从C#调用的C函数
[DllImport("
.dll", CharSet = CharSet.Auto, EntryPoint = "dllmain", ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] public static extern void dllmain(ref string str1); -
定义字符串
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)] public string str1;
-
从C#代码调用C函数
dllmain(ref str1);
C代码:
-
function原型
__declspec(dllexport) void __stdcall dllmain(char *str1);
-
function定义
void__stdcall dllmain(char *str1) { : }
希望这对你有所帮助。 🙂
在.net中声明函数时,将以下属性添加到参数argv
:
[In][MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStr)]
您还应该将CharSet=CharSet.Unicode
属性添加到应用于外部函数的DllImport属性。