web-dev-qa-db-ja.com

リンクが失敗する[ilink32エラー]致命的:ファイル 'TYPES.OBJ'を開けません

C++ Builder 201を使用して古いレガシープロジェクトビルドのコードを更新し、C++ Builder 10 Seattleでコンパイルしました。私はパスを変更する必要がありました。多くのdupIgnoreを_TDuplicates::dupIgnore_に変更し、[〜#〜] msxml [〜#〜]および[〜#〜] msmq [〜#〜]など.

最初に、メインプロジェクトがbplおよびdllの形式で使用する一連のサブプロジェクトについて説明し、最後にメインプロジェクトのコードをコンパイルします。

しかし...それはリンクに失敗します:P

_[ilink32 Error] Fatal: Unable to open file 'TYPES.OBJ'
_

潜在的な問題に関する情報を見つけようとしましたが、SystemDelphi Compiler設定の下のnit Scopeで提供されていることを確認しています。しかし、それはこのプロジェクトにはすでに存在しています。他に何が原因ですか?

詳細については。現時点では、「クラシック」bcc32コンパイラを使用してコンパイルされています。

インクルードパス:

$(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\dinkumware;

ライブラリパス:

_$(BDSLIB)\$(PLATFORM)\$(Config);$(BDSLIB)\$(PLATFORM)\Release\psdk;
_
55
inquam

見つかったファイルからこの文字列を削除する必要がある場合、プロジェクト内のすべてのファイルで文字列TYPES.OBJを見つける必要があると思います。この前に、バックアッププロジェクトディレクトリを作成することを忘れないでください。

古いプロジェクトをBCB5からBCB 6に変換するときに同様の問題がありました。拡張子が「.bpr」のプロジェクトファイルからファイル名が「.obj」の文字列を削除すると、問題が解決しました。

Project1.bprプロジェクトファイルの文字列は次のようになりました。

<OBJFILES value="Unit1.obj Types.obj"/>

変更後:

<OBJFILES value="Unit1.obj"/>
1
Rufat

見つかったファイルからこの文字列を削除する必要がある場合、プロジェクト内のすべてのファイルで文字列TYPES.OBJを見つける必要があると思います。この前に、バックアッププロジェクトディレクトリを作成することを忘れないでください。

古いプロジェクトをBCB5からBCB 6に変換するときに同様の問題がありました。拡張子が「.bpr」のプロジェクトファイルからファイル名が「.obj」の文字列を削除すると、問題が解決しました。

Project1.bprプロジェクトファイルの文字列は次のようになります:変更後:

1
Halaj Butt

最初にTim Dからのアドバイスに従います。コンパイラの新しいバージョンを使い始めるときはいつでも、古いプロジェクトのインポートの90%は、コード/ヘッダー/オブジェクトファイルを直接インクルードし、空のバージョンを作成して、その後99%の時間でコピーして修正することによるものです。

データが新しく作成されたことを確認し、それから古いデータをインポートした後、レガシーの非互換性の問題をチェックします。 「リスト」を変更することで、正しい道を進んでいます。また、新しいコンパイラに合わせてすべてのコードを書き直すことをお勧めします。これは、完成したプロジェクトを実行するためのコードの互換性と合理化の両方に役立ちます。

最後に、すべての追加データ(ヘッダーファイルなどの純粋なコードではないファイル)が、現在使用されているコンパイラでも認識できることを確認します。 (レガシーはこれを厄介なものにする可能性があります。)

0
Gulp Dragondawn

コンパイラがTYPES.OBJを取得しているように見えますが、複数の要因が原因で発生する可能性があるため、開くことができません(C++はプラットフォームに依存します。TYPES.cppは別のOSでビルドされている可能性があります)。 .cpp ..また、このCPPがインポートしているライブラリがコンパイル可能であることにも注意してください//それでもエラーが発生する場合は、フルビルドに進んでください。それら。

0
Akshay