在C#中从dll调用一个带有wchar和char的C函数

时间:2016-06-24 09:08:39

标签: c#

当一切都是char时,我这样做:

class call_dll
{
    [DllImport("my.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern int myfunc(string aTitle, string aMessage);
}

但是如果aTitle是wchar和aMessage char?我该怎么办?

1 个答案:

答案 0 :(得分:3)

您可以像这样使用MarshalAsAttribute

class call_dll
{
    [DllImport("my.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern int myfunc(
        [MarshalAs(UnmanagedType.LPWStr)] string aTitle,
        [MarshalAs(UnmanagedType.LPStr)]  string aMessage);
}

请参阅docs for the UnmanagedType enum以供参考。