2012-02-20 47 views
2

我有一個UInt32值,我想傳遞給使用InterOpServices的外部DLL。如何使用PInvoke編組I8類型?

的原型非託管代碼是:

[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類型。

這怎麼辦?

回答

6

你需要指定的參數聲明:[MarshalAs(UnmanagedType.I8)]

1

UnmanagedType是一個枚舉,所以你可以嘗試Enum.Parse方法:

string value = "9"; 
UnmanagedType i8 = (UnmanagedType)Enum.Parse(typeof(UnmanagedType), value); 

希望這對您有所幫助。

相關問題