我想要使用InterOpServices传递给外部dll的UInt32值。
非托管代码的原型是:
[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类型。
如何做到这一点?
答案 0 :(得分:6)
您需要在参数声明中指定:[MarshalAs(UnmanagedType.I8)]
答案 1 :(得分:1)
UnmanagedType是枚举,因此您可以尝试使用Enum.Parse方法:
string value = "9";
UnmanagedType i8 = (UnmanagedType)Enum.Parse(typeof(UnmanagedType), value);
希望这对你有所帮助。