3

HoloLens 1 が TCP 経由でローカル ネットワーク上の別の PC に接続する約 2 日前まで、アプリケーションは正常に動作していました。

最近、TcpClient() デフォルト コンストラクターを呼び出すたびに上記のエラーがスローされます。(デフォルトであるため)値が渡されていないため、エラーが発生している値がわかりません。

HoloLens slack の誰かからリンクされた次の解決策を試しました: https://github.com/Azure/azure-remote-rendering/issues/6

その解決には、Unity 2019.3.15f への更新が必要です。Visual Studio、Windows SDK、および Unity の複数の異なる構成を試しました。

犯人がil2cppであることを示していると思われる他の投稿を複数見つけました。関連する出力のコピーを次に示します。

UnloadTime: 7.610200 ms
Exception thrown at 0x771E3AE2 in TCPTest.exe: Microsoft C++ exception: Il2CppExceptionWrapper at memory location 0x025CE7EC.
Exception thrown at 0x771E3AE2 in TCPTest.exe: Microsoft C++ exception: Il2CppExceptionWrapper at memory location 0x025CE90C.
ArgumentException: Value does not fall within the expected range.
  at System.Net.Sockets.Socket.SetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, System.Int32 optionValue) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.Socket.set_DontFragment (System.Boolean value) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.Socket.SocketDefaults () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.Socket..ctor (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.TcpClient.initialize () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.TcpClient..ctor (System.Net.Sockets.AddressFamily family) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Net.Sockets.TcpClient..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at TcpTestClient.Start () [0x00000] in <00000000000000000000000000000000>:0 

(Filename: currently not available on il2cpp Line: -1)

これまでに発生したこのエラーの最小の発生は次のとおりです。

新しい Unity プロジェクト (バージョンは関係ないようです)

シーンに GameObject を追加し、以下を添付します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.Sockets;

public class TcpTestClient : MonoBehaviour
{
    private TcpClient tcpClient;
    // Start is called before the first frame update
    void Start()
    {
        tcpClient = new TcpClient();
        if (tcpClient != null)
        {
            Debug.Log("Constructor succeeded!");
        }
    }
}

HoloLens 1 に指定されているように Unity ビルド設定を構成し、発行設定 > 機能に InternetClient、InternetClientServer、PrivateNetworkClientServer を必ず含めます。

適切なビルド ツールがインストールされた Visual Studio 2017 または 2019 でビルドし、結果のソリューションを開きます。HoloLens にデプロイすると、結果のエラーがデバッグ コンソールに出力されます。

読んでくれてありがとう、誰かが持っている洞察を本当に感謝します。

4

2 に答える 2