問題タブ [enet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
845 参照

c++ - Linux から Windows への enet のクロスコンパイル、エラーのリンク

序章

  • MinGW-W64 を使用して、Linux から Windows にクロス コンパイルしようとしています。
  • プロジェクトに enet を追加する前は動作していましたが、現在、enet へのリンクに関する問題が発生しています。
  • CMake は enet を正しく検出します。ENET_LIBRARY と ENET_INCLUDE_DIR が正しい場所に設定されています。
  • を使用して検証されたように、ENet にはシンボルが含まれています。/usr/x86_64-w64-mingw32/bin/objdump /usr/local/mingw64/lib/libenet.a -t
  • 「`enet_address_set_host' への未定義の参照」でビルドが失敗する
  • Visual Studio と VCPkg を使用して、同じコード ベースをネイティブにコンパイルできます。
  • 編集: libenet.a の内容を確認すると、特に私のプログラムではなく、enet のクロスコンパイルに問題があることが確認されます

私の他の依存関係はどれも GNU autoconf を使用していないので、そこに問題があると思います。

エラー

Enet のクロスコンパイル

enet をクロス コンパイルするには、次のスクリプトを使用します。

マイプログラム

私は cmake を使用してメイクファイルを生成し、ツールチェーンを使用してクロスコンパイルを許可しています。このプログラムは、SFML、thor、std::thread、および Lua で正常にコンパイルされます。これらのライブラリはいずれも GNU autoconf を使用しません

私の CMakeLists.txt は次のようになります。

findENet ファイルは次のようになります。

ツール チェーンは次のようになります。

linklibs.rsp ファイルは、リンク コマンドをリンカに渡すために使用されます。値は次のとおりです。

(編集) AR フォーマット

動作していない libenet.a を抽出してファイルを使用すると、次のようになります。

作業中の libsfml-graphics.a を抽出すると、次のようになります。

したがって、問題はenetのコンパイルにあるようです