掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.24614

LNK2005
投稿者---れいが(2005/12/08 14:53:16)


VC++6.0の環境を.netでコンパイルしています。
そこで、下記リンクエラーが出たのですが、
理解ができません。
OC704ad.lib(GraphVw.obj) : error LNK2005: "public: virtual __thiscall CFileDialog::~CFileDialog(void)" (??1CFileDialog@@UAE@XZ) は既に mfc71d.lib(MFC71D.DLL) で定義されています。
そこで、どうしてエラーがでるのか
教えていただけないでしょうか。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:LNK2005 24615 Craft 2005/12/08 17:15:36
<子記事> Re:LNK2005 24618 たいちう 2005/12/08 18:00:41


No.24615

Re:LNK2005
投稿者---Craft(2005/12/08 17:15:36)


>VC++6.0の環境を.netでコンパイルしています。
>そこで、下記リンクエラーが出たのですが、
>理解ができません。
>OC704ad.lib(GraphVw.obj) : error LNK2005: "public: virtual __thiscall CFileDialog::~CFileDialog(void)" (??1CFileDialog@@UAE@XZ) は既に mfc71d.lib(MFC71D.DLL) で定義されています。
>そこで、どうしてエラーがでるのか
>教えていただけないでしょうか。

エラーの原因は、メッセージのとおり、
mfc71d.lib と 0c74ad.lib の graphvw.obj に
CFileDialog::~CFileDialog(void)" がいるため、名前重複でリンクできないということを言っています。

VisualCフォーラムでもこの手の話がでているみたいですが、ライブラリ間での名称重複なので、根本的な対策はなさそうな感じです。

参考:VisualCフォーラムのLink2005で困っている件の記事
http://forums.belution.com/ja/vc/000/277/77.shtml


この投稿にコメントする

削除パスワード

No.24616

Re:LNK2005
投稿者---Craft(2005/12/08 17:22:37)


ちょっとわかりにくかったので。

>エラーの原因は、メッセージのとおり、
>mfc71d.lib と 0c74ad.lib の graphvw.obj に
>CFileDialog::~CFileDialog(void)" がいるため、名前重複でリンクできないということを言っています。

mfc71d.lib と 0c74ad.lib に CFileDialog::~CFileDialog(void) が
いるので、同じクラス名:メソッド名をもつ実体が2ついるために
リンクできない、ということです。
(どっちをリンクしたらいいのかコンパイラにはわからない)


この投稿にコメントする

削除パスワード

No.24618

Re:LNK2005
投稿者---たいちう(2005/12/08 18:00:41)


私も先日そのリンクエラーで苦労しました。

私の場合は、プログラムを本体とスタティックライブラリとに分けていたのですが、
両者でランタイムライブラリのタイプが違っていたのが原因でした。
シングルスレッド用とマルチスレッド用が混ざってしまっていたため。

心当たりがあるようでしたら、各プロジェクトのプロパティで
C/C++ → コード生成 → ランタイムライブラリで、揃えてみてください。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧