如何使用PInvoke作为I8类型进行编组?

ben*_*san 2 c# pinvoke marshalling interopservices

我有一个UInt32值,我想使用InterOpServices传递给外部DLL.

非托管代码的原型是:

[DllImport("svr.dll")]
public static extern UInt32  CreateTag (
    [MarshalAs(UnmanagedType.LPStr)] String Name,
    Object Value,
    UInt16 InitialQuality,
    bool IsWritable);
Run Code Online (Sandbox Code Playgroud)

调用代码是:

int myValue = Convert.ToInt32(item); //How to marshal as I8 type
tagNumber = (UInt32)svr_DLL.CreateTag(
    DeviceName + "." + el.tagName,
    myValue, // <-- this argument
    192,
    Convert.ToBoolean(el.tagEditable));
Run Code Online (Sandbox Code Playgroud)

我想传递给I8类型的对象值"myValue".

如何才能做到这一点?

SLa*_*aks 6

您需要在参数声明中指定: [MarshalAs(UnmanagedType.I8)]