リンカエラーの対応は? – プログラミング – Home

リンカエラーの対応は?
 
通知
すべてクリア

[解決済] リンカエラーの対応は?


moko
 moko
(@moko)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

初めまして。
初心者特有の無理解からくるものとは存じてますが、リンカエラーが出てしまって困って
います。
環境はVC6.0 SP2です。

あるプロジェクト(複数のダイアログで構成)で、どのダイアログからでも呼び出せる関
数が必要だったのでヘッダーファイルを自作し、プロジェクトへ追加しました。
最初は問題なかったのですが、突然
「LNK2005:Foo(class CStatic *,int) (?Foo@@YAXPAVCStatic@@H@Z) はすでに
HOGEHOGEDlg.obj で定義されています」
というエラーが出まくってしまい、MSDNの http://support.microsoft.com/default.aspx?
scid=kb;ja;148652#kb2を試してみたり色々調べていたのですが
どうにも治ってくれないのです。
(ちなみにFoo(class CStatic *,int)というのが自作ヘッダーファイルで作った関数で
す)

ちなみに、このエラーが出だしたきっかけはオブジェクトファイルの削除でした。
どうすればいいのかまったくわからず困り果てています。
どうかご助言よろしくお願いいたします。


引用未解決
トピックタグ
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

#マルチポストについて調べ
てみてください。

ヘッダに関数本体を書いてま
せんか
宣言だけにするか(推奨)、
inline化を検討してみてくださ
い。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

#読みにくくてごめんなさい
、張り付けたら改行がおかし
かったです…orz


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

# なんでだろう…orz


返信引用
moko
 moko
(@moko)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

#マルチポストについて
解答を急ぐあまり。。申し訳ありません

おっしゃる通り、ヘッダに関数本体の記述をしています。
本当に無知で申し訳ないのですが、ヘッダに宣言のみ書くとすると
関数本体はcppファイルに書くという事ですよね?

自作ヘッダーファイルと同じように、cppファイルを自分で
プロジェクトへ追加してそこへ本体の記述をすればよいということでしょうか?

重ね重ね申し訳ありません。
お時間ありましたらご教示いただけると幸いです。
素早い解答ありがとうございました。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

そうです。
CPPを足して、そっちに書いてください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

マルチポスト先すべてに対し
「どのような原因であったか/如何に解決したか」
を報告し、終結してください。

それが最低のマナーです。


返信引用
moko
 moko
(@moko)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

わかりました、環境が手元に無いので今は試せませんが^^;、
Banさんのおっしゃる通り明日やってみます。

まだやってみたわけではないので解決とはいえないかもしれませんが、
打つ手無しだったので非常に助かりました。

解答ありがとうございました。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

#C++Builderは使ってないのでわかりませんが、サイズの最適化でもしてるんでしょうか。
#まぁ解決できたそうで何よりですが。


返信引用
moko
 moko
(@moko)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

追加報告

教えていただいた通り、ヘッダに合わせてcppファイルをひとつ作成し、そちらに関数本
体の定義を記述することによってリンカエラーが出なくなりました。
それだけの確認に午前いっぱいかかってしまったわけですが。。。;
グローバル変数の定義などもcppファイルでやらないと同じようにエラーが出ますね(当
然ですね)

これでやっと先へ進めます・・・Banさん、ご教示本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました