これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド winebuild-development です。
プログラム:
NAME
winebuild - ワイン DLL ビルダー
SYNOPSIS
ワインビルド [オプション] [入力ファイル...]
DESCRIPTION
ワインビルド Wine DLL の構築に必要なアセンブリ ファイルを生成します。
基本的には、Unix ライブラリ内にカプセル化された Win32 DLL です。
ワインビルド 生成するファイルの種類に応じて、さまざまなモードがあります。 の
モードは、以下に指定されるモード オプションのいずれかによって指定されます。 モードに加えて
オプションに加えて、「」で説明されているように、他のさまざまなコマンドライン オプションを指定できます。 OPTIONS
のセクションから無料でダウンロードできます。
モード OPTIONS
必要に応じて、次のオプションのいずれかを正確に指定する必要があります。
winebuild を生成します。
--dll .spec ファイルからアセンブリ ファイルをビルドします (「 SPEC FILE 構文 詳細については)、または
標準の Windows .def ファイルから。 .spec/.def ファイルは、 -E
オプション。 結果のファイルはアセンブルされ、他のオブジェクト ファイルにリンクされる必要があります。
動作する Wine DLL を構築します。 このモードでは、 ファイル のリストである必要があります
最終的な DLL にリンクされるすべてのオブジェクト ファイル。 ワインビルド 取得するため
他の DLL からインポートする必要があるすべての未定義シンボルのリスト。
- EXE 実行可能ファイルのアセンブリ ファイルをビルドします。 これは基本的には --dll
実行可能ファイルであるため、入力として .spec/.def ファイルを必要としないことを除いて、このモード
関数をエクスポートする必要はありません。 ただし、一部の実行可能ファイルはエクスポート機能を実行します。
.spec/.def ファイルは、 -E オプション。 実行可能ファイルの名前は、
.spec/.def ファイル名が存在する場合はそれから、または明示的に -F オプション。 ザ·
結果のファイルをアセンブルし、他のオブジェクト ファイルにリンクして、
動作する Wine 実行可能ファイル、および他のすべてのオブジェクト ファイルが次のようにリストされている必要があります。
ファイル。
--def spec ファイルから .def ファイルを構築します。 .spec ファイルは、 -E オプションを選択します。
これは、PE (Win32) コンパイラで DLL をビルドするときに使用されます。
--implib
仕様ファイルから PE インポート ライブラリを構築します。 .spec ファイルは、 -E
オプションを選択します。
- 資力
すべての入力リソースを含む .o ファイルを生成します。 構築するときに便利です
PE binutils は複数のリソース ファイルを XNUMX つのファイルとして処理できないため、PE コンパイラを使用します。
入力。 標準 Unix ビルドの場合、リソース ファイルは自動的にインクルードされます。
spec ファイルを構築するとき、中間の .o ファイルは必要ありません。
OPTIONS
--as-cmd=コマンドとして
アセンブリ ファイルのコンパイルに使用するコマンドを指定します。 デフォルトは as.
-NS、 --target =cpu メーカー[-kernel]-os
生成されたコードがビルドされるターゲット CPU とプラットフォームを指定します。 の
ターゲットの指定は、config.sub によって返される標準の autoconf 形式です。
--cc-cmd=ccコマンド
アセンブリ ファイルのコンパイルに使用する C コンパイラを指定します。 デフォルトでは代わりに
で指定されたアセンブラを使用します --as-cmd.
-NS、 --遅延ライブラリ=名
指定したライブラリの遅延インポート モードを設定します。これは、次のいずれかである必要があります。
でインポートされたライブラリ -l オプション。 遅延モードは、ライブラリが実行されないことを意味します。
インポートされた関数が実際に呼び出されるまでロードされます。
-D シンボル
C コンパイラとの互換性のために無視されます。
-e、 --entry =function
モジュールのエントリ ポイント関数を指定します。 指定しない場合、デフォルトは DllMain
DLLの場合、および メイン 実行可能ファイルの場合 (標準 C の場合) メイン 定義されていません、 勝つ
代わりに使用されます)。 これは Win32 モジュールにのみ有効です。
-E、 --エクスポート=ファイル名
.spec ファイルを指定します (「 SPEC FILE 構文 詳細については)、または標準の Windows .def
ビルドされる DLL または実行可能ファイルのエクスポートを定義するファイル。
--外部シンボル
仕様ファイルから外部シンボルに直接リンクできるようにします。 通常は記号
DLL によってエクスポートされるものは、DLL 自体で定義する必要があります。 このオプションでそれが可能になります
別の Unix ライブラリで定義されたシンボルを使用可能 (で定義されたシンボルの場合)
別の DLL、 フォワード 代わりに仕様を使用する必要があります)。
-f オプション
コード生成オプションを指定します。 現在 -fPIC & -fasynchronous-unwind-tables
サポートされています。 他のオプションは、C コンパイラとの互換性のために無視されます。
--偽モジュール
通常のアセンブリまたはオブジェクトの代わりに、dll または exe 用の偽の PE モジュールを作成します。
ファイル。 PE モジュールにはモジュールのリソースが含まれていますが、実行可能コードは含まれていません。
-NS、 --ファイル名=ファイル名
モジュールのファイル名を設定します。 デフォルトでは、仕様のベース名が使用されます。
ファイル(拡張子なし)。
-NS、 - 助けて
使用法メッセージを表示して終了します。
-NS、 --heap =サイズ
モジュールのローカル ヒープのサイズをバイト単位で指定します (Win16 モジュールにのみ有効)。
デフォルトではローカルヒープはありません。
-I ディレクトリにジョブを開始します。
C コンパイラとの互換性のために無視されます。
-k、 --キルアット
生成された .def ファイル内のシンボル名から stdcall 装飾を削除します。
でのみ意味のある --def モード。
-K フラグ
C コンパイラとの互換性のために無視されます。
--ラージアドレス対応
実行可能ファイルにフラグを設定して、このアプリケーションがサポートしていることをローダーに通知します。
2 GB を超えるアドレス空間。
--ld-cmd=ldコマンド
オブジェクト ファイルのリンクに使用するコマンドを指定します。 デフォルトは ld.
-L、 --library-path =ディレクトリにジョブを開始します。
指定されたディレクトリを、検索されるディレクトリのリストに追加します。
ライブラリをインポートします。
-l、 --library =名
指定されたライブラリをインポートし、対応するライブラリを探します libname.def 内のファイル
で指定されたディレクトリ -L オプションを選択します。
-m16、 -m32、 -m64
それぞれ 16 ビット、32 ビット、または 64 ビットのコードを生成します。
-マーム、 -親指、 -XNUMX月=オプション, -mcpu =オプション
アセンブラのコード生成オプションを設定します。
-NS、 --メインモジュール=モジュール
16 ビット DLL をビルドするときは、対応する 32 ビット DLL の名前を次のように設定します。 モジュール。 この
16 ビット DLL のロード順序が、DLL のロード順序と強制的に一致するようにするために使用されます。
32ビットのもの。
-NS、 --dll 名=dll名
モジュールの内部名を設定します。 Win16 モジュールでのみ使用されます。 デフォルト
spec ファイルのベース名 (拡張子なし) を使用することです。 これは次の目的で使用されます
KERNEL。これは KRNL386.EXE に存在するためです。 それ以外の場合は必要ないはずです。
--nm-cmd=nmコマンド
未定義のシンボルのリストを取得するために使用するコマンドを指定します。 デフォルトは nm.
--nxcompat=はい|いいえ
モジュールが no-exec サポートと互換性があるかどうかを指定します。 デフォルトは「はい」です。
-o、 --output =file
出力ファイルの名前を設定します(デフォルトは標準出力)。 出力ファイルの場合
名前が .o で終わる場合、テキスト出力は一時ファイルに送信され、その後アセンブルされます。
指定された .o ファイルを生成します。
-NS、 --res=rsrc.res
指定されたバイナリ リソース ファイルからリソースを読み込みます。 の rsrc.res ファイルはすることができます
ソースリソースファイルから生成される wrc(1) (または Windows リソースを使用)
コンパイラ)。
このオプションは Win16 リソース ファイルにのみ必要です。Win32 リソース ファイルは単に
として記載 ファイル 自動的に正しく処理されます (ただし、 -r
このオプションは Win32 ファイルでも機能します)。
--save-temps
さまざまな一時ファイルを削除しないでください。 ワインビルド を生成します。
-サブシステム=サブシステム[:主要な[.マイナー]]
実行可能ファイルのサブシステムを設定します。次のいずれかになります。
コンソール コマンドライン実行可能ファイルの場合、
ウィンドウズ グラフィカルな実行可能ファイルの場合、
ネイティブ ネイティブ モード DLL の場合、
ひるみ CE DLLの場合。
コマンドライン実行可能ファイルのエントリポイントは通常の C です。 メイン 関数。 NS wメイン
Unicode 文字列を使用する引数配列が必要な場合は、代わりに関数を使用できます。
グラフィカル実行可能ファイルには、 勝つ エントリーポイント。
オプションで、サブシステムのメジャー バージョンとマイナー バージョンを指定することもできます。 デフォルト
サブシステムのバージョンは 4.0 です。
-u、 --undefined =シンボル
Add シンボル リンカーを呼び出すときに、未定義のシンボルのリストに追加されます。 これでできます
静的ライブラリの特定のモジュールを強制的に含めることが可能
インポートを解決しています。
-v、 -詳細
によって呼び出されるさまざまなサブコマンドを表示します。 ワインビルド.
- バージョン
プログラムのバージョンを表示して終了します。
-w、 -警告
警告をオンにします。
SPEC FILE 構文
構文
仕様ファイルには、順序宣言のリストが含まれている必要があります。 一般的な構文は次のとおりです。
次のとおりです。
序数 機能タイプ [フラグ] エクスポート名 ( [引数..。] ) [ハンドラ]
序数 変数 [フラグ] エクスポート名 ( [データ...] )
序数 外部 [フラグ] エクスポート名 [シンボル名]
序数 スタブ [フラグ] エクスポート名 [ (引数..。) ]
序数 同じ [フラグ] エクスポート名 データ
# 注釈
行末がエスケープされている場合を除き、宣言は XNUMX 行に収まる必要があります。
バックスラッシュ文字。 の # 行内のどこかに文字があると、行の残りの部分が
コメントとして無視されます。
序数 エントリポイントに対応する序数、または「@」を指定します。
自動序数割り当て (Win32 のみ)。
フラグ は、「-」文字が前に付く一連のオプションのフラグです。 サポートされているフラグは次のとおりです。
-norelay
エントリ ポイントはリレー デバッグ トレースには表示されません (Win32 のみ)。
-ノーネーム
エントリ ポイントは、名前ではなく序数によってエクスポートされます。 名前は
まだ輸入可能です。
-ret16 この関数は 16 ビット値を返します (Win16 のみ)。
-ret64 この関数は 64 ビット値を返します (Win32 のみ)。
-登録
この関数は CPU レジスタを使用して引数を渡します。
-民間
この関数は他の DLL からインポートできません。アクセスのみ可能です。
GetProcAddress を通じて。
-序数
エントリ ポイントは、名前ではなく序数によってインポートされます。 名前は
まだ輸出されています。
-arch =CPU[,CPU]
エントリ ポイントは、指定された CPU アーキテクチャでのみ使用できます。 の
名 win32 & win64 すべての 32 ビットまたは 64 ビット CPU アーキテクチャに一致
それぞれ。 16 ビット DLL での指定 -arch=win32 エントリーポイントの原因となる
32 ビット ラッパー モジュールからエクスポートされます。
演算 序数
構文:
序数 機能タイプ [フラグ] エクスポート名 ( [引数..。] ) [ハンドラ]
この宣言は関数のエントリ ポイントを定義します。 によって定義されたプロトタイプ
エクスポート名 ( [引数..。] ) 動的リンクに使用できる名前と形式を指定します
引数の。 代わりに「@」を使用できます エクスポート名 通常のみのエクスポートの場合。
機能タイプ 次のいずれかである必要があります。
標準コール
通常の Win32 関数の場合
パスカル 通常の Win16 関数の場合
cdecl C 呼び出し規約を使用した Win16 または Win32 関数の場合
可変長引数
変数を使用した C 呼び出し規則を使用する Win16 または Win32 関数の場合
引数の数
この呼び出し
Win32 関数の場合、 この呼び出し 呼び出し規約 (最初のパラメータ
i386 の %ecx レジスタ内)
引数 次の XNUMX つまたは複数である必要があります。
単語 (16ビット符号なし値)
剣 (16 ビットの符号付きワード)
長い (ポインターサイズの整数値)
intxnumx (64ビット整数値)
intxnumx (128ビット整数値)
フロート (32ビット浮動小数点値)
(64ビット浮動小数点値)
PTR (リニアポインタ)
STR (NULL で終わる ASCII 文字列への線形ポインタ)
wstr (NULL で終わる Unicode 文字列への線形ポインタ)
セグメント (セグメント化されたポインタ)
セグメント文字列 (NULL で終わる ASCII 文字列へのセグメント化されたポインタ)。
注: 16 ビットおよびセグメント化されたポインター型は、Win16 関数でのみ有効です。
ハンドラ エントリ ポイントを実装する実際の C 関数の名前です。
32ビットモード。 ハンドラーは次のように指定することもできます。 dll名.function 転送されたものを定義するには
関数 (別の DLL に実装されている関数)。 もしも ハンドラ 指定されていません。
と同一であると想定される エクスポート名。
この最初の例では、32 ビット GetFocus() 呼び出しのエントリ ポイントを定義します。
@ stdcall GetFocus() GetFocus
この 16 番目の例では、XNUMX ビット CreateWindow() 呼び出しのエントリ ポイント (序数
100 は単なる例です)。 また、バックスラッシュを使用して行を分割できる長さも示しています。
100 パスカル CreateWindow(ptr ptr long s_word s_word s_word \
s_word ワード ワード ワード ptr) WIN_CreateWindow
可変数の引数を使用して関数を宣言するには、関数を次のように指定します。
可変長引数 Win32 関数の '...' パラメータを使用して C ファイル内で宣言するか、
Win16 関数の追加の VA_LIST16 引数。 wsprintf* 関数を参照してください。
たとえば、user.exe.spec と user32.spec です。
変数 序数
構文:
序数 変数 [フラグ] エクスポート名 ( [データ...] )
この宣言は、指定された序数での 32 ビット ワードとしてデータ ストレージを定義します。
エクスポート名 は、動的リンクに使用できる名前になります。 データ XNUMX進数も可能
または「0x」が前に付く XNUMX 進数。 次の例では、変数 VariableA を次の場所に定義します。
序数 2 で 4 つの int を含む:
2変数 VariableA(-1 0xff 0 0)
この宣言は Win16 仕様ファイルでのみ機能します。 Win32では使用する必要があります 外部 を取得する必要がある者
(下記参照)。
外部 序数
構文:
序数 外部 [フラグ] エクスポート名 [シンボル名]
この宣言は、C シンボル (変数または関数) に単純にマップするエントリを定義します。
Win32 仕様ファイルでのみ動作します。 エクスポート名 シンボルを指します シンボル名 それ
C コードで定義する必要があります。 あるいは、次の形式にすることもできます。 dll名.シンボル名 〜へ
転送されたシンボル (別の DLL に実装されているシンボル) を定義します。 もしも シンボル名 is
指定されていない場合は、次と同一であるとみなされます。 エクスポート名。
スタブ 序数
構文:
序数 スタブ [フラグ] エクスポート名 [ (引数..。) ]
この宣言はスタブ関数を定義します。 名前と序数を利用できるようにします。
動的リンクですが、関数が次の場合はエラー メッセージが表示されて実行が終了します。
これまでに呼ばれた。
等しい 序数
構文:
序数 同じ [フラグ] エクスポート名 データ
この宣言は、序数を絶対値として定義します。 エクスポート名 名前になります
動的リンクに使用できます。 データ XNUMX 進数または先頭に次の XNUMX 進数を付けることができます。
「0x」。
作者
ワインビルド 長年にわたって多くの人々によって取り組んできました。 主な著者はロバート J.
アムシュタット、アレクサンドル・ジュリアール、マルティン・フォン・ローヴィス、ウルリッヒ・ヴァイガント、エリック・ヤングデール。 多くの
他の人が新機能やバグ修正に貢献してくれました。 完全なリストについては、git を参照してください。
ログをコミットします。
onworks.net サービスを使用してオンラインで winebuild-development を使用する