このhファイルで関数getFirstAvailableTSSComPortを呼び出そうとしています
http://sourceforge.net/p/yeicapi/code/11/tree/trunk/include/yei_threespace_api.h
hファイルから取得された(そしてC#コードに変換された)関連する構造体と列挙型
private enum TSS_Type
{
TSS_BTL = 0,
TSS_USB = 1,
TSS_DNG = 2,
TSS_WL = 3, //wireless wired (connected to PC)
TSS_WL_W = 4, //wireless wireless
TSS_EM = 5,
TSS_DL = 6,
TSS_BT = 7,
TSS_UNKNOWN = 8
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
private struct Comport
{
[MarshalAs(UnmanagedType.LPStr, SizeConst = 64)]
public string Port;
[MarshalAs(UnmanagedType.LPStr, SizeConst = 256)]
public string FriendlyName;
public TSS_Type Type;
}
DllImport
[DllImport("ThreeSpace_API.dll")]
private static extern int getFirstAvailableTSSComPort([Out, MarshalAs(UnmanagedType.Struct)] out Comport port, int filter);
呼び出し
Comport port;
var error = getFirstAvailableTSSComPort(out port, 0);
私は得る
PInvoke関数'YEi3!YEi3.Program :: getFirstAvailableTSSComPort'の呼び出しにより、スタックのバランスが崩れました。これは、マネージドPInvokeシグニチャがアンマネージドターゲットシグニチャと一致しないことが原因である可能性があります。PInvokeシグニチャの呼び出し規約とパラメータがターゲットのアンマネージドシグニチャと一致することを確認してください。