如何使用PInvoke编组为I8类型
本文关键字:I8 类型 何使用 PInvoke | 更新日期: 2023-09-27 18:25:16
我有一个UInt32值,要使用InterOpServices传递到外部dll。
非托管代码的原型是:
[DllImport("svr.dll")]
public static extern UInt32 CreateTag (
[MarshalAs(UnmanagedType.LPStr)] String Name,
Object Value,
UInt16 InitialQuality,
bool IsWritable);
调用代码为:
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));
我想将对象值"myValue"作为I8类型传递给它。
如何做到这一点?
您需要在参数声明中指定:[MarshalAs(UnmanagedType.I8)]
UnmanagedType是一个枚举,所以您可以尝试enum。解析方法:
string value = "9";
UnmanagedType i8 = (UnmanagedType)Enum.Parse(typeof(UnmanagedType), value);
希望这对你有帮助。