C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■93015 / 5階層)  C#でC++DLLコマンドを実行
□投稿者/ Hongliang (918回)-(2019/11/14(Thu) 10:06:41)
> struct ConnectParameter
> {
>    char  Addr1[32];
>    char  Addr2[32];
>    unsigned int Port1;
>    unsigned int Port2;
>    struct sockaddr_in my;
>    struct sockaddr_in dst;
>    int PLC_Type;
> };
わざわざmy/dstを公開してるということは、
それらも呼び出し側が設定する必要があるということなんでしょうね。
なのでC#でもこれらを定義してConnectParameterに追加する必要があります。
sockaddr_inは以下のような定義になるでしょう。

struct sockaddr_in {
    public ushort sin_family, sin_port;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=4)]
    public byte[] sin_addr;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst=8)]
    public byte[] sin_zero;
}

sin_addrに相当するバイト配列は、IPアドレス限定であれば、
IPAddress.Parse(address).GetAddressBytes()
で取得できます。
名前解決も必要なら、
(1) IPAddress.TryParseして成功ならそのIPAddressを使う
(2) 1に失敗したらDns.GetHostEntryを呼び出し、AddressListの中から、
  AddressFamilyがInterNetworkのIPAddressを使う
という手順が良いかと思います。

// PLC_Typeは設定しなくていいのかな…。

> Connect(struct ConnectParameter CP);
結局
> C++ のところ、*が付いていました。
は勘違いということで良いんですかね?
付いているかどうかで、C#のDllImportするConnect関数の定義も変わってきますが。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: C#でC++DLLコマンドを実行 /サラリーマンZ →Re[6]: C#でC++DLLコマンドを実行 /サラリーマンZ
 
上記関連ツリー

C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/11(Mon) 17:23) #92947
Re[1]: C#でC++DLLコマンドを実行 / Hongliang (19/11/11(Mon) 17:37) #92948
  ├ Re[2]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/12(Tue) 12:23) #92971
  └ Re[2]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/13(Wed) 17:21) #93006
    └ Re[3]: C#でC++DLLコマンドを実行 / Hongliang (19/11/13(Wed) 19:16) #93010
      └ Re[4]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/14(Thu) 08:59) #93014
        └ C#でC++DLLコマンドを実行 / Hongliang (19/11/14(Thu) 10:06) #93015 ←Now
          └ Re[6]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/14(Thu) 23:36) #93020
            └ Re[7]: C#でC++DLLコマンドを実行 / Azulean (19/11/15(Fri) 06:29) #93021
              └ Re[8]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/27(Wed) 22:32) #93202
                └ Re[9]: C#でC++DLLコマンドを実行 / Azulean (19/11/27(Wed) 22:59) #93204
                  └ Re[10]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/11/28(Thu) 20:44) #93233
                    └ Re[11]: C#でC++DLLコマンドを実行 / Azulean (19/11/28(Thu) 22:07) #93235
                      └ Re[12]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/12/01(Sun) 16:26) #93268
                        └ Re[13]: C#でC++DLLコマンドを実行 / Azulean (19/12/01(Sun) 16:57) #93269
                          └ Re[14]: C#でC++DLLコマンドを実行 / サラリーマンZ (19/12/01(Sun) 17:06) #93270

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信