質問

Interoperservicesを使用して外部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));

i8タイプとしてオブジェクト値「myvalue」に渡したいです。

これはどうすればいいですか?

役に立ちましたか?

解決

パラメーター宣言でそれを指定する必要があります。 [MarshalAs(UnmanagedType.I8)]

他のヒント

UnmanagedTypeはenumであるため、enum.parseメソッドを試すことができます。

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

これがあなたに役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top