6

COFF ライブラリ (lib ファイル) を OMF ライブラリに変換して C++Builder6 で使用する方法はありますか? この coff は単なるインポート ライブラリではなく、いくつかのコードを結合します。borlandのcoff2omf.exeで変換しようとすると、15KBのファイルから1KBのファイルになってしまいます。

4

5 に答える 5

6

DigitalMars コンバーターの代わりに、http://agner.org/optimizeで入手できるオブジェクト ファイル コンバーターを使用できます。

このユーティリティは、すべての 32 ビットおよび 64 ビット x86 プラットフォームのオブジェクト ファイルを COFF/PE、OMF、ELF、および Mach-O フォーマット間で変換するために使用できます。オブジェクト ファイル内のシンボル名を変更できます。プラットフォーム間で関数ライブラリを構築、変更、および変換できます。オブジェクト ファイルと実行可能ファイルをダンプできます。また、SSE4、AVX、AVX2、FMA、および XOP 命令セットをサポートする非常に優れた逆アセンブラーも含まれています。ソースコードが含まれています (GPL)。

これは、低レベルの最適化に最適なサイトです。関連するマニュアルの pdf ファイルには、複数のプラットフォームにわたるライブラリ形式に関する多くの有用な情報があります。

于 2011-10-03T10:18:57.173 に答える
3

OMF オブジェクト ファイルが同等の COFF オブジェクトよりもはるかに小さいことはかなり一般的であるため、られるものは有効である可能性があります。

そうでない場合は、lib ファイルを個々のオブジェクト ファイルに分割し、オブジェクト ファイルを逆アセンブルして、OMF オブジェクト ファイルに再アセンブルし、それらを OMF lib ファイルにまとめることができます。

于 2010-06-24T22:24:34.327 に答える
2

これはかなり遅いですが、誰かが答えを探している場合は、 DigitalMars からCOFFIMPLIBをチェックアウトできます。COFF2OMF は同じサイトにありますが、こちらの方が古いようです。

于 2010-12-01T16:23:11.927 に答える
1

Delphi (omf) と Ada (gcc、coff) の統合には多くの労力が必要でしたが、単一の exe でそれを行うことを断念しました。

私は正直に、gcc rtl と ada rtl .a (coff ライブラリ) を多くの .o (オブジェクト) に分解し、それらを coff2omf 経由で変換しようとしました (DMD coff2omf と iirc 別の convobj などがありました)。一部の coff .o は .obj への変換に失敗したため、信頼できる方法であったかどうかはわかりません。

アセンブラ レベルの変換は、例外やその他の詳細を扱う場合、それほど単純ではありません。

ftp://ftp.styx.cabel.net/pub/UniLink/という名前のツールを試していないのは残念です

明らかではありませんが、UniLink を使用して目的を達成できる可能性があります。そのターゲットの 1 つは、C++ Builder パッケージ (動的および静的の両方) です。unilink -Tpp -GI でうまくいくはずです

于 2012-05-17T04:15:30.873 に答える