typedef struct {
bool bool_value;
} BoolContainer;
BoolContainer create_bool_container (bool bool_value)
{
return (BoolContainer) { bool_value };
}
Run Code Online (Sandbox Code Playgroud)
public partial class NativeMethods
{
[DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl)]
public static extern BoolContainer create_bool_container([MarshalAs(UnmanagedType.I1)] bool bool_value);
}
Run Code Online (Sandbox Code Playgroud)
BoolContainer:首先是投掷MarshalDirectiveException: Method's type signature is not PInvoke compatible.:
public struct BoolContainer // Marshal.SizeOf(typeof(BoolContainer)) = 1
{
[MarshalAs(UnmanagedType.I1)] // same with UnmanagedType.U1
public bool bool_value;
}
Run Code Online (Sandbox Code Playgroud)
第二是工作:
public struct BoolContainer // Marshal.SizeOf(typeof(BoolContainer)) = 1
{
public byte …Run Code Online (Sandbox Code Playgroud)