0

これを公式の RakNet フォーラムに投稿する必要があることはわかっていますが、実際に投稿したのですが、まるで死んでいるようです。

私がここで質問している理由は、私は C++ について何も知らないからです。私はゲーム開発者であり、Unity3D/C# を使用して新しいゲームを開発しています。それはマルチプレイヤーであり、RakNet はオープン ソース化されていたので、私が望んでいたものです。試してみてください。

それでは、これがエラーログです。

raknet_wrap.cxx(15441): エラー C2558: クラス 'RakNet::ReliabilityLayer': 使用可能なコピー コンストラクターがないか、コピー コンストラクターが 'explicit' と宣言されています

エラーのある行は次のとおりです。

jresult = new ReliabilityLayer((const ReliabilityLayer &)result); 

フル機能:

SWIGEXPORT void * SWIGSTDCALL CSharp_RakPeer_RemoteSystemStruct_reliabilityLayer_get(void * jarg1) {
  void * jresult ;
  RakNet::RakPeer::RemoteSystemStruct *arg1 = (RakNet::RakPeer::RemoteSystemStruct *) 0 ;
  ReliabilityLayer result;

  arg1 = (RakNet::RakPeer::RemoteSystemStruct *)jarg1; 
  result =  ((arg1)->reliabilityLayer);
  jresult = new ReliabilityLayer((const ReliabilityLayer &)result); 
  return jresult;
}

エラーを理解できるように、なぜそれが機能しないのかを教えて、C ++をまったく知らない人に説明してもらえますか?

(編集) ReliabilityLayer クラスも提供する予定です! ここにあります:http://pastebin.com/qTXedJFw

4

2 に答える 2

0

というわけで、ようやく最新の RakNet バージョンの RakNet C# DLL をビルドすることができました。

そして、C++ の経験のない人に、私が経験した狂気を経験させたくないので、使いやすいように DLL を共有しています。プロジェクトにインポートして使用を開始するだけです。

ここにあります: https://drive.google.com/file/d/0BwuOJwLuDZfnM29DTFlLTWZWOXc/view?usp=sharing

于 2015-02-24T15:59:10.887 に答える
0

これを見ていて、うまく答えられない人は誰でも OK です。

これは明らかに MSVC 2013 のコンパイラのバグです (これは私が試したものです)。

SWIG は、次の行を含むファイル「RakNet_wrap.cxx」を生成します。

jresult = new ReliabilityLayer((const ReliabilityLayer &)result); 

これを回避する最も簡単な方法は、次のようにこの行を編集することです。

jresult = new ReliabilityLayer(result); 

したがって、キャストは明示的ではなく暗黙的になり、MSVC 2013 はこれを受け入れます。

唯一の問題は、[ビルド] をクリックすると、SWIG がこのファイルを上書きし、再びエラーが発生することです。したがって、SWIG プレビルド ステップを削除して (Alt+F7->Build Events->Pre-Build Event コマンド ラインから PreBuild.bat を削除)、再度ビルドします。これで、正常にコンパイルおよびリンクされます。

ソース コードを変更して SWIG を再度実行する必要がある場合は、PreBuild.bat ファイルを再度配置することを忘れないでください。

SWIG 2.0.12 も使用してください。私が試した最新バージョン(3.0.5); 壊れた C# コードを生成します (System.Runtime.InteropServices が明示的でもなく、'using' キーワードを介してインポートされていないため、未定義の HandleRef と IntPtr)。これについて SWIG プロジェクトにチケットを上げました: https://github.com/swig/swig/issues/433

于 2015-06-09T23:11:02.983 に答える