こんにちは。
C言語の勉強をしているのですが、リンカができなくて困っています。
環境:
OS:windows2000
コンパイラ:Borland C++ 5.5
(他に必要な環境があれば、ご教授ください)
まず、main()関数と作成した関数をコンパイルします。
Borland C++ 5.5のヘルプを参照して、
「bcc32 main.obj make.obj pro.lib」
これでリンクしようとしたのですが、
「ファイル pro.libが開けません」
とプロンプトに出力されます。
(main()関数→main.obj
作成した関数→make.obj
関数プロトタイプ宣言するファイル→pro.lib)
保存は(main.obj→main.cpp、make.obj→make.cpp、pro.lib→pro.h)
と以上のようになっております。
コーディングミスは参考書を散々読み直したので、間違いないと思っております。
ただ、参考書が間違っていたら、取り付く島もありません。
どうぞ、お願いいたします。
No.2ベストアンサー
- 回答日時:
質問に質問を返して申し訳ないのですが,pro.libというファイルは既に存在しますか?
→Yesの場合
pro.libがコンパイル&アーカイブ済みのライブラリで,main.cppかmake.cppでpro.libに含まれる(exportされている)関数を使っているケースでは,質問文の通り,pro.libをリンクする必要があります。
カレントフォルダにpro.libが存在するのに,リンカがそれを開けないということは考えずらいのですが,pro.libが正しいライブラリファイルでない可能性があります。(リンカはフォルダ指定の無い.libファイルを指定されると,まずカレントフォルダを探し,見付からない場合には環境変数やコマンドラインで指定されたライブラリパスを探しに行きます)
→Noの場合
コマンドラインからpro.libを取り除くとうまくいきませんか?
pro.hにプロトタイプ宣言した関数が,main.cppかmake.cppに実装された関数,および“C/C++で黙って使える関数”(暗黙のライブラリの関数)だけである場合,.libファイルを明示的にリンクする必要はありません。
質問の解釈が間違っていたらごめんなさい。もしもtororinnさんが,pro.hというヘッダを書いたら,pro.libというライブラリができると思われているのであれば,それは間違いです。この場合のプロトタイプ宣言は,“どこかの”.objや.libに含まれている関数を利用するためのもので,コンパイルしてもファイル(実体)にはなりません(実体は別な場所に格納されているので)。
ありがとうございます。
返事が遅くなって申し訳ございません。
答えはNOです。
RJCOさんのおっしゃる通り、pro.libをコマンドラインから外すと実現できました。
本当に助かりました。
No.3
- 回答日時:
そのライブラリがマイクロソフト用である可能性が高いと思います。
そのpro.libをcoff2omf.exeにかけるか、pro.dllにimplib.exeを用いてみて下さい。
ボーランドとマイクロソフトとではファイル内部のフォーマットが異なるのです。
参考URL:http://www.borland.co.jp/cppbuilder/freecompiler …
お返事ありがとうございました。
せっかくご教授いただいたのですが、他の方の回答で解決致しました。
しかしながら、色々な場面を想定できたので、とても勉強になりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 競技プログラミングに関する質問です。 3 2022/04/03 19:51
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スタティックライブラリ関係の...
-
VC++6.0からVC++.NET2005へ移植
-
'd3dx9.lib' が開けません。
-
#pragma commentの相対パス指定
-
「MFCを使用しない」から「MFC...
-
C++によるPostgreSQLの接続
-
VC++でビルド時の、リンク警告 ...
-
タイプライブラリのレジストリ...
-
'stdafx.h'のエラーに関して
-
C言語 コンパイルできない "vi...
-
dllかlibか
-
error LNK2019: 未解決の外部シ...
-
DirextXエラー:ファイル'dxerr9...
-
eclipseでのcsvファイル読み込み
-
C++Builder リンカエラーとは?
-
WindowsにおけるPostgreSQL+C言...
-
LTspice モデル作成について
-
猫でもわかるWindowsのスクリー...
-
OpenSSLの共有ライブラリ(libcr...
-
スタティックリンクライブラリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタティックライブラリ関係の...
-
静的/動的リンクライブラリにつ...
-
exeファイルはどのdllを参照す...
-
visual studio community2017 O...
-
fatal error LNK1104: ファイル...
-
【VS2008 C++】2つのプロジェ...
-
#pragma commentの相対パス指定
-
C++によるPostgreSQLの接続
-
VC++でビルド時の、リンク警告 ...
-
C言語のPathFileExistsについて
-
スタティックリンクライブラリ...
-
error LNK2019: 未解決の外部シ...
-
WindowsにおけるPostgreSQL+C言...
-
タイプライブラリのレジストリ...
-
'stdafx.h'のエラーに関して
-
インポートライブラリ(.lib)フ...
-
mac(osX)で、Javaはどこにイン...
-
lvwReport/エラー/プロジェクト...
-
operator new が再定義されてい...
-
#include <winreg.h>をインクル...
おすすめ情報