- Published on
Borland C++ Builder - Error invalid OMF record, type 0x021
- Authors
- Name
- Daisuke Kobayashi
- https://twitter.com
作成している SDK が Borland C++ Builder でリンクできないという報告が,今日お客さんからありました.調べてみて初めて知ったのですが,Borland の C++ Builder では,Visual C++ で作成したライブラリをそのままリンクできないようです.そのままリンクしようとすると下記のようなリンクエラーが発生します.
bcc32 main.cpp win.lib -o main Error: 'C:\USERS\DAISUKE\HOME\WIN.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
結果的には,Visual C++ で作成したライブラリ(lib, dll)のインポート用の lib ファイルを coff2omf という borland 標準のツールで変換したらリンク出来ました.検証時の作業をまとめておきます.
インストール
ここ のページの C++ コンパイラの入手方法に従って必要事項を入力し,無償版のコンパイラを取得します.ダウンロードした圧縮ファイルの解凍にはパスワードが必要です.パスワードは登録したメールアドレスに送られてくるので,それを用いて解凍します.
解凍すると freecommandlinetools2.exe と freeturbodebugger.exe ができます.今回はコンパイラのみ必要だったので,freecommandlinetools2.exe をインストールしました.今回はデフォルトの C:\borland にインストールしました.
次にインクルードとライブラリディレクトリの設定をします.C:\borland\bcc55\Bin フォルダに bcc32.cfg ファイルを作成し,下記の項目を入力して保存します.
-IC:\borland\bcc55\Include -LC:\borland\bcc55\Lib
最後に C:\borland\bcc55\Bin へパスを通します.ここまで完了すれば,コマンドラインから bcc32 コマンドにてコンパイルができるかと思います.
ライブラリの変換
coff2omf.exe を用いて,ライブラリを borland からインポートできるように変換します.
coff2omf.exe win.lib win_borland.lib
変換したライブラリをリンクして,動作するか確認します
bcc32.exe main.cpp win_borland.lib -o main ./main