問題タブ [winelib]

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 投票する
1 に答える
695 参照

c - Wineで使用するLinuxライブラリをラップするには? BAD_IMAGE_FORMAT が表示され続けます

プラグインで拡張できる Windows 専用のゲームと、使用したい Linux ライブラリがあります。アプリケーション (Unity ゲーム) は Wine/Proton で正常に動作します。私は Winelib がこれを行うことができることを発見しました。私はUser's Guide、特に私の正確なユースケースについて言及している 5 番目のセクションに従っていました。

いくつかの試行 (winemaker から --single-target arg を削除するなど) の後、Proton デバッグ ログに STATUS_BAD_IMAGE_FORMAT と思われる c000007b が表示され続けるポイントに到達しました。

Linux ライブラリの名前を変更した (そしてそれに対してリンクした) ことに注意してください。これは、それと私のラッパーとの間の潜在的な競合を回避するためです。

私は 64 ビット バージョンのライブラリしか持っておらず、cdecl 呼び出し規約を使用して C# コードから呼び出されます。これは私がこれまでに試したことです(およびこれらの組み合わせ):

  • コンテンツを含む .spec ファイルを追加しました (最初は -arch なしで序数が異なります):
  • ライブラリのヘッダーと .c ファイルを追加:
  • winemaker --nosource-fix --dll --nomfc -I. -L. -llinux_library .当時の使用ワインメーカーmake
  • ゲーム全体に.dll.soファイルをコピーしました
  • .dll.so ファイルを steamapps/common/Proton 5.0/dist/lib64/wine/ にコピーし、ネイティブ ライブラリを 1 つ上のレベル (lib64/) にコピーし、その他を削除しました
  • また、lib64/ の代わりに lib/ にコピーしようとしました
  • ファイルの dll オーバーライドを追加し、組み込みに設定しました
  • 参照されている DLL (odbc32、ole32、oleaut32、winspool、odbccp32) とライブラリ (uuid) をメイクファイルから削除しました。
  • --mno-cygwinコンパイラ フラグに追加する
  • -m64コンパイラ/リンカー フラグにとを追加( Wine 仕様ファイル-fPICに基づく)
  • 私も .def ファイルを作成してそれを使用しようとしました
  • --nomsvcrt引数を追加して再度 winemaker を使用し、実行しましたmake(ヘッダー ファイルには string.h が含まれています)。

Proton ログから (+module、他の人は私にそれ以上の情報を提供しませんでした):

同じことが .dll の有無にかかわらず繰り返され、lib (library_name.dll、liblibrary_name、および liblibrary_name.dll) で始まります。

そのエラー コード以外に何が問題なのかについて、これ以上のログを取得できませんでした。

C# 側 (Unity が Proton で実行) では、DllNotFoundException が発生します。

ワインのバージョン (winebuild、winegcc): 5.9 (ステージング) - gcc 9.0.1

プロトン バージョン: 5.0 - wine-5.0-603-g068dee4

0 投票する
1 に答える
24 参照

windows-10 - VM を使用してプログラムを高速化することは可能ですか?

ゲームの映像を集めようとしています。たとえば、2 倍の速度で再生させることは可能なのでしょうか?

1 時間実行すると、ゲーム内時間を数時間キャプチャしたいという意味で。