将字符串数组从c#传递给c编程
本文关键字:编程 字符串 数组 | 更新日期: 2023-09-27 18:10:33
我正在从c# . net托管代码调用非托管C编程代码。但我无法通过字符串数组作为参数从。net函数C中的函数:
dllmain(const int argc, const char *argv[]){}
请帮助我,我如何从C Sharp调用这个函数。净
谢谢。
你可以这样做:
c#代码:声明你想从c#中调用的C函数
[DllImport("<DLL_File_Name>.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代码:
- 函数原型
__declspec(dllexport) void __stdcall dllmain(char *str1);
函数定义 void__stdcall dllmain(char *str1) { : }
希望这对你有帮助。: -)
在。net中声明函数时,将以下属性添加到参数argv
:
[In][MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.LPStr)]
还应该将CharSet=CharSet.Unicode
属性添加到应用于外部函数的DllImport属性中。