无法将字符串从托管 c# 传递到非托管 c
本文关键字:字符串 | 更新日期: 2023-09-27 18:35:21
我已经尝试了本网站中显示的多种方法来将字符串从 c# 传递到 c,但 C 代码中的函数不断获得空参数。
这是我的 C 函数:
__declspec(dllexport) BOOL __cdecl GetSignatureInfo(char* fileName, char* output)
和我的 C# 用法:
[DllImport("GetSignature.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int GetSignatureInfo([MarshalAs(UnmanagedType.LPStr)]string filePath, StringBuilder output);
我在这里做错了什么吗?提前谢谢。
编辑:这就是我调用函数的方式:
StringBuilder output = new StringBuilder(256);
string spath = @"C:'Program Files (x86)'Google'Chrome'Application'chrome.exe";
Console.WriteLine(Detect.GetSignatureInfo(spath, output));
问题是字符串格式不正确。将lstrcpynW
切换到mbstowcs
,现在可以工作了。