无法将字符串从托管 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));

无法将字符串从托管 c# 传递到非托管 c

问题是字符串格式不正确。将lstrcpynW切换到mbstowcs,现在可以工作了。