何が間違っているのか本当にわかりません。ネット状態の多くの例として、C# から C で記述された dll に文字列を渡しています。何らかの理由で、文字列が C dll で NULL として出力されます。私が間違っていることについて何か考えはありますか?
子:
extern __declspec(dllexport) void Cmd(long CmdType,long DataPar, const char *DataStr);
void Cmd(long CmdType,long DataPar,const char *DataStr)
{
// DataStr is NULL here even when passing a string with data in it
}
C#:
[DllImport(@"pjsua-i386-Win32-vc8-Debug.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern void Cmd(long CmdType, long DataPar,[MarshalAs(UnmanagedType.LPStr)]String s);
Cmd(1,0,"TEST");
IntPtr や文字列全体のマーシャリングなどの他のことも試しましたが、すべて NULL で同じことがわかりました。また、他のものもたくさん。