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

わんくま同盟

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

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

■93268 / 12階層)  C#でC++DLLコマンドを実行
□投稿者/ サラリーマンZ (10回)-(2019/12/01(Sun) 16:26:00)
何度も質問してすいません。
C#でC++/CLIのDLLをなんとか読み込んで関数実行させようとしています。

参考にしているC++/CLIプログラムでは ConnectParameter CP; と構造体の名前を定義して
そのCPの構造体の中にさらに sockaddr_in my と sockaddr_in dst の構造体が存在しているようなので
下記のように構造体ConnectParameterの中でsockaddr_in my とsockaddr_in dstの宣言をしたのですが
CP.my.sinaddr = のようにメンバを指定してあげようとすると、アクセスできない保護レベルになっている
というエラーになってしまいます。
構造体の中でさらに構造体を宣言するにはどうしたらよいのでしょうか?


    ConnectParameter CP;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ConnectParameter
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string Addr1;
public int Port1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string Addr2;
public int Port2;

  //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;
  }

sockaddr_in my;
sockaddr_in dst;

}


    //コマンド実行
private void button1_Click(object sender, EventArgs e)
{
CP.Addr1 = "192.168.1.2";
CP.Port1 = 9999;
CP.Addr2 = "192.168.1.1";
CP.Port2 = 9999;

CP.my.sin_addr = IPAddress.Parse(CP.Addr1).GetAddressBytes();
CP.dst.sin_addr = IPAddress.Parse(CP.Addr2).GetAddressBytes();

Connect(CP);
}
編集キー/

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

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
        └ Re[5]: C#でC++DLLコマンドを実行 / Hongliang (19/11/14(Thu) 10:06) #93015
          └ 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
                      └ C#でC++DLLコマンドを実行 / サラリーマンZ (19/12/01(Sun) 16:26) #93268 ←Now
                        └ 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

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