質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

Q&A

1回答

19307閲覧

”[ilink32 エラー] Fatal: ファイル 'CPORT.OBJ' を開けません” このエラーを解決したい。

MaeharaKenji

総合スコア86

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

0グッド

0クリップ

投稿2021/02/06 06:15

編集2021/02/07 10:35

現在RAD Studioで勉強中です。

次のようなエラーが出ました。

[ilink32 エラー] Fatal: ファイル 'CPORT.OBJ' を開けません

また、このエラーとは別にcomport関係のコンポーネントが見つかりませんという警告メッセージが出てきたりしました。(この警告は再度ビルドしたりした時にはでなくなってしまいました。)

確か、今回のプロジェクトで、C++ Builder 2009で作成していた際に、RS-232Cで通信するための機能を追加していたと聞きました。
もしかしたらそれが関係しているかもしれません。

このエラーの回避方法、またエラー内容をご教示の程、宜しくお願い致します。

また、どのコンポーネントが不足しているか初回のビルド時にコンポート名が表示された警告が出ていたのですが、それを再度表示させる方法などもありましたら、ご教示の程よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

コンポーネント名が分からないと何とも言えないです。
ソース名でググった感じでは以下のコンポーネントでしょうか?

ComPort Library
https://sourceforge.net/p/comport/svn/33/tree/trunk/comportlib/comportlib4/source/

引用テキストまた、どのコンポーネントが不足しているか初回のビルド時にコンポート名が表示された警告が出ていたのですが、それを再度表示させる方法などもありましたら、ご教示の程よろしくお願い致します。

最初の質問時に「すべて無視」で開けたとありますが、無視した後保存していませんか?
dfmファイルが設計画面のソース(テキストファイル)ですが、コンポーネントが見つからず「無視orすべて無視」で開いた場合、コンポーネントは削除されています。
よって、その後保存すると痕跡がなくなります。

投稿2021/02/08 01:10

FKD

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MaeharaKenji

2021/02/08 01:45

回答頂きありがとうございます。 再度、このserialcom通信用のコンポーネントを使用していたコードファイルを確認してみたところdfmファイルの箇所のコンポーネント部分のコードが削除されていることを確認しました。 object ComportCard: TComPort BaudRate = br9600 Port = 'COM1' Parity.Bits = prNone StopBits = sbOneStopBit DataBits = dbEight Events = [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full] FlowControl.OutCTSFlow = False FlowControl.OutDSRFlow = False FlowControl.ControlDTR = dtrDisable FlowControl.ControlRTS = rtsDisable FlowControl.XonXoffOut = False FlowControl.XonXoffIn = False OnRxChar = ComportCardRxChar Left = 296 Top = 16 end どうやら、すべて無視して保存して修正してしまったようでした。なのでエラーが出なくなってしまったようです。 ”TComPort”を検索したら、https://sourceforge.net/projects/comport/こちらの”ComPort Library”のようなので、とりあえずインストールしてみたいと思います。
MaeharaKenji

2021/02/08 04:35

ComPort Libraryのインストール方法で、RAD Studio 10.2にインストールできたというサイト(マフラーのメモ帳 http://yuukiwogousei.blog.fc2.com/blog-entry-109.html)の掲載を参考に、https://sourceforge.net/p/comport/discussion/261327/thread/f4cfe7af/ こちらのサイトからダウンロードできるcomport411f_for_xe10.7zをダウンロードしてインストールしたところ、コンポーネントパレットにCPortLibが表示され、コンポーネントが使えるようになったことを確認しました。
MaeharaKenji

2021/02/08 04:38

しかし、ビルド結果で、 [ilink32 エラー] Fatal: ファイル 'CPORT.OBJ' を開けません このエラーが残ります。 今回のエラーはCOMシリアル通信のコンポーネントとは別の内容ということでしょうか? 他に解決する方法はありませんでしょうか?
FKD

2021/02/08 05:02

リンカエラーなので、解決というか普通に確認してください。 ・CPORT.OBJが存在するか(コンパイル結果か、コンポーネントに含まれているかは知りません) ・そこにライブラリパスが通っているか
MaeharaKenji

2021/02/08 05:20

エラー内容をテキストファイル保存して、ファイル内を”CPORT.OBJ”というキーワード検索したところ、 c:\program files (x86)\embarcadero\studio\20.0\Bin\CodeGear.Cpp.Targets(3846,5): error : Fatal: ファイル 'CPORT.OBJ' を開けません このようなエラーが出てきました。
dodox86

2021/02/08 05:24

>@質問者さん 稀に*.OBJがライブラリの一部として提供されるような製品はありますが、昔のコンパイラで作成された*.OBJでは今のものにリンクできない可能性が高いです。そうではなく、CPORT.OBJとやらが自分でソースファイルからコンパイルして*.OBJを生成するものなのであれば、そのソースが無いとダメです。
dodox86

2021/02/08 05:30

「RAD Studioで勉強中」とありますが、勉強の為であるならば現在のRAD Studioで新規にプロジェクトを作成し、作っていくのが本筋で、昔の製品をポーティングするのはどちらかというと応用編です。今回の質問を含む、先の質問でのような問題が多々発生します。
MaeharaKenji

2021/02/08 05:44

現在のプロジェクトフォルダ内に、CPORT.OBJとかは見当たらないですね。フォルダ内で全ファイルとかファイル内部にCPORT.OBJというのをキーワード検索しても出てこないですね。 ほぼ丸ごとRAD Studioにファイルを入れて、そのままビルドもいけるかなぁ、なんて思ってたんですけど、難しそうですね… 1個1個の機能を追加しながらビルドできるかどうかを確認しながらやっていかないといけないようですねぇ…
dodox86

2021/02/08 05:48

反対に「CPORT.OBJ」をリンク対象から外してみては。そもそも不要か、或いは新しいライブラリに同梱しているかも、です。ただ、何となく元はCPortクラスなんていうC++のクラスを宣言、定義したファイルなような気はしますが。(あくまで、気がする、です)
MaeharaKenji

2021/02/08 06:12

リンク対象を外す設定はどこでやればよいのでしょうか? ツール--->オプション--->言語--->C++--->パスとディレクトリ とかですか?
dodox86

2021/02/08 06:30

それはすみませんが私では分かりません。RAD Studioのマニュアル、リファレンス等をご覧ください。RAD Studioの中のilink32と言うリンカーが、CPORT.OBJと言う単独の*.OBJファイルをリンクさせようとしていると想定したのが前提でのコメントです。
FKD

2021/02/08 08:32

マフラーのメモ帳をざっと見たのですが、コンポーネントのプロジェクトがC++Builder 6のプロジェクトのようですね。 C++Builder 10.3だと、コンパイラがClangベースになっているので、従来コンパイラのobjとは互換がありません。 コンポーネントの各パッケージをClang版コンパイラで再構築してみてはどうでしょう? (プロジェクトオプションのC++コンパイラで「従来のBolandコンパイラを使用」をfalseにする)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問