• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BorlandC++Builder5.0でリンカエラー)

BorlandC++Builder5.0でリンカエラー

このQ&Aのポイント
  • BorlandC++Builder5.0のA/D変換ボード制御でリンカエラーが発生
  • リンカエラーの原因は外部シンボル 'AdOpen' の未解決である
  • リンカエラーが発生する原因として、ボードのインストールに問題がある可能性がある

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> [リンカ エラー]'FBIAD.LIB' contains invalid OMF record, type 0x21 (possibly COFF) > > さっぱりわかりません(^^;) コンパイルしたもの(.objなど)には、決められたフォーマットが幾つかあって、 それが期待したのと違う(OMF というフォーマットで読もうとしてるんだけど、 タイプが違う、もしかしたら COFF というフォーマットかも)ということみたい。 多分 VC++ だったらいけると思う。 もしくは、変換ツール(coff2omf みたいな)が BC++ についてるとか。 A/D変換ボード用のライブラリは、DLL で提供されているものなんでしょうか? であれば、implib で、インポートライブラリを DLL から作り直しましょう。

kenichi
質問者

お礼

ありがとうございました!無事解決しました(^^) 何とかこれで卒研が先に進めそうです。この調子だと前途多難ですが(笑) 今までDLLとLIBとかの関係が分からなかったのですが、何となく分かった気がします。 Windows\SYSTEMにインストールされていたFbiAd.dllからimplibでFbiAd.libを作り、リンクさせた所、バッチリ動きました。 しかし、普通はVC++でDLLを提供するものなのですか?Borlandはマイナーなのかなぁ...

その他の回答 (2)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

> Windows\SYSTEMにインストールされていたFbiAd.dllからimplibでFbiAd.libを作り、リンクさせた所、バッチリ動きました。 > しかし、普通はVC++でDLLを提供するものなのですか?Borlandはマイナーなのかなぁ... 解決したようで良かった。 提供の形態に、どれが普通なのか、は一概に言えませんが、形態を決める一番大きい 理由は、「提供者が、どの開発環境を持っているか?」だと思います。 開発用のライブラリであれば、利用者が広がれば、その要求に応えるために、両方の ライブラリが提供されているケースはあります(例えば、lzh 展開用の UNLHA なんか)。 また、バイナリだと、どうしてもそういうケースはありますから、ソースで提供され ている、とかね。 かくいう私も、BC++ は(雑誌の付録のCDなんかで)持ってはいるものの、使ったことが ありません。必要があれば、使うつもりはあるんですけどね。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

原因として、考えられることを二つほど。 ・AdOpen()を持っているライブラリをリンクのときに指定していない 質問の書き方が、ちょっとプログラムを知っている人のようなので、こういうミスは 無いだろうな、と想像します。本命は、こちら。 ・AdOpen() は C の関数であり、そのプロトタイプ宣言が適切にされていない 細かく分類すると、 ・提供されているインクルードファイルをインクルードしていない ・提供されているインクルードファイルが C++ で使うことを想定されて書かれていない ・そもそもプロトタイプ宣言が書いてあるインクルードファイルが無くて、自分でも宣言していない の三種類があります。 C++ は、関数のオーバーロード(引数の型や個数が違えば、同名の関数でも異なった 実装ができる)の仕組みを持っているので、いわゆる C の関数とは区別されます。 AdOpen() の引数は、(私には)想像するしかないんですが、例えば、以下のような プロトタイプ宣言が、(自分で書くかどうかは別にして)どこかに必要です。 extern "C" int AdOpen(const char*);

kenichi
質問者

補足

回答ありがとうございます。 リンクのとき指定というのは、どういうことですか?プロジェクトに.libを追加してこの問題はなんとか解決できましたが、またエラーが出てしまいしました。 [リンカ エラー]'FBIAD.LIB' contains invalid OMF record, type 0x21 (possibly COFF) さっぱりわかりません(^^;) 今は学生です。卒業研究でA/Dコンバータを使わないといけないのですが、初期化の段階で詰まってしまっています。

関連するQ&A