問題タブ [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.
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
windows-10 - VM を使用してプログラムを高速化することは可能ですか?
ゲームの映像を集めようとしています。たとえば、2 倍の速度で再生させることは可能なのでしょうか?
1 時間実行すると、ゲーム内時間を数時間キャプチャしたいという意味で。