• 締切済み

エラーが外れません!深刻な問題 たすけてください!

クラスで3DCGを表示するプログラムの授業をしています。 私も先生の指示に従って入力しているのですが、 どうしてもエラーが外れないのです。 ということは私の入力ミス? と思えば、エラーが発生しなかった友達から中身を丸ごと入れ替えてもエラーは外れないのです。 なぜ、みんなは正常に起動して私はエラーが発生するのか? これでは授業に遅れを生じ最後には成績にも響く大問題となりかねません! まだ、3DCGの授業は始まったばかりだから遅れを取り戻せます。 正常に戻すなら今のうちです。 なお、2DCGのゲームを作成したときはみんなと変わらず問題なく起動しました。 以下がどうしても取れないエラーです。 これは文法エラーじゃないようです。 LINK : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます。 nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に LIBCD.lib(new.obj) で定義されています。 nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に LIBCD.lib(dbgdel.obj) で定義されています。 .\Debug/NmBase4.exe : fatal error LNK1120: 外部参照 2 が未解決です。 そのほかです。ほかのエラーは補足で言います。 私の使っているコンパイラは Visual Studio .NET 2003 みんなは Visual Studio 6.0 だそうです。 どうかたすけてください!お願いします!

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

http://support.microsoft.com/default.aspx?scid=kb;ja;148652 プロジェクトの設定で 特定のライブラリを無視 nafxcwd.lib;LIBCD.lib;を追加 ※どのランタイムライブラリを使っているかはプロジェクトのプロパティ →C/C++→コード生成→ランタイムライブラリの部分をみればわかります。 「既に LIBCD.lib(new.obj) で定義されています。」というエラーから LIBCD.libとリンクしていることがわかったので今回はLIBCD.libです。 追加の依存ファイルに nafxcwd.lib;LIBCD.lib; 要は二重にnewとdeleteが定義されているという問題です。 MFCのライブラリnafxcwd.libをリンクする場合、Cの標準ライブラリより先に リンクする必要があります。

全文を見る
すると、全ての回答が全文表示されます。
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

VS6.0とVS.NET2003は違うものですから、6.0で動くのに.NETで動かないものがあるのは「当然」です。 .NETを使わなければいけない理由が無いのでしたら6.0を使ってはいかがですか? もし、授業に使うPCで貴方が使うものにだけ6.0が入っていないのだとしたら先生に「6.0じゃないと動かないようなので6.0を使わせろ」と言ってください。

nVIDIA
質問者

補足

同じC++で同じメーカーの同じシリーズのコンパイラなのにこんなに違うとは思わなかったです。 ライブラリのバージョンも新しいもの対応にするのも検討しているそうです。 今度VS2005が出たから微妙な時期だそうでVS6.0にとどめているそうです。 いままでホコリかぶっていた6.0を使用する事にして、 .NETはC++授業・自分用にすることにします。 こうなると新たな問題が浮かび上がりました。 いまのソフト開発業界ではどのコンパイラが主流なのでしょうか? この事については改めて質問させていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • K-1
  • ベストアンサー率21% (832/3844)
回答No.1

>これは文法エラーじゃないようです。 そのとおりで、リンクに失敗しています。 2重定義ですかね。 VB6とNETの環境の違いとしかいいようがないです。 で、ここで相談する前に先生に相談しましたか? とりあえず、対処方法がMSのWebにありますので参照してください。 http://support.microsoft.com/default.aspx?scid=kb;ja;148652

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;148652
nVIDIA
質問者

補足

先生から配布されたスケルトンプログラムを起動させたところ、 6.0は起動に成功していますが、.NETは成功していません。 なお、スケルトンプログラムは一切手をつけていません。 先生に相談しみましたが環境が悪いのではないか? 以外は答えが返ってきません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • operator new が再定義されています

    自社製のライブラリを使用してPCゲーム開発をしています。 今回、ゲームにネット接続の機能を持たせることとなりました。 ネットゲーム、というほどのものでもなく、 特典のデータがダウンロードできる、といった程度ですが。 コレのためにFTPダウンロードの仕組みを試作しました。 検証用のコンソールアプリケーションではうまくいったのですが、 いざゲームプログラムに組み込んだところ、 nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に (自社製ライブラリ).lib(Allocator.obj) で定義されています。 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に (自社製ライブラリ)..lib(Allocator.obj) で定義されています。 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) は既に libcpmtd.lib(newaop.obj) で定義されています。 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) は既に LIBCMTD.lib(delete2.obj) で定義されています。 1>C:\Users\New Challenger\PROGRAMING\(開発中).exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 というエラーが発生。 「http://support.microsoft.com/kb/148652/ja」 の説明を参考に対処してみたところ、 1>(自社製ライブラリ).lib(Allocator.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に nafxcwd.lib(afxmem.obj) で定義されています。 1>(自社製ライブラリ).lib(Allocator.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に nafxcwd.lib(afxmem.obj) で定義されています。 1>C:\Users\New Challenger\PROGRAMING\(開発中).exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 となってしまうのですね。 ぶつかり合っている両者のうちの、どちらかがなければエラーを避けられるのは確かなんですが、 自社製ライブラリの方のnew/deleteも、アプリケーションの仕組みに合わせて変形させてあるものなので取っ払ってしまうわけにもいかず、、、 何かうまいこと共存させる方法はないものでしょうか? 自社製のライブラリではありますが、 開発者の方が今現在社を離れているためすぐに回答を得られないので、 広く知恵を貸していただきたいのです。

  • 多重定義が起きている?--lnk2005エラー:VC++

    今つまずいている問題は、VC++2008環境下で、以下のような構造になっているプログラムにおいて、多重定義?されているのでコンパイルが通らないというものです。 ソースコードを載せることは大きすぎてできないので、問題となる部分の記述のみ抽出して書きます。 -------define.h---------- ・・・・(module.h内の関数に使われる型の定義など) --------------------------- -------module.h---------- #include "define.h" void mod_1(void){・・・} void mod_2(void){・・・} --------------------------- このように、2つのヘッダーファイルがあり、define.hをインクルードしてmodule.hを使うという構造です。 (一般的ではないようですが、module.h内にmod_1やmod_2の実体を書き込んでいます。) その中で、以下のようなcppソースファイルがあります。 -------Main.cpp---------- #include "module.h"   (他のMain.cpp内の関数の都合上、Main.cppでもmodule.hをインクルードしています。関係あるかもしれないと思い書きました。) int main(){ M(); N(); } ------------------------ -------M.cpp---------- #include "module.h" void M(void){ mod_1(); mod_2(); } ---------------------- -------N.cpp---------- #include "module.h" void N(void){ mod_1(); mod_2(); } ---------------------- とすると、コンパイルの結果は次のようになります。 1>N.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に M.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に M.obj で定義されています。 多重定義や多重インクルードは起こしていないと思っていますが、M.cppとN.cpp内の定義が衝突する理由がわかりません。どなたか理由が思いつく方、教えていただけたら幸いです。お願いいたします!! ◆◆◆   ◆◆◆   ◆◆◆   ◆◆◆   ◆◆◆ ちなみに、たとえばMやNとまったく同じ「A.cpp」を作り、このように書いたとします。 -------A.cpp---------- #include "module.h" void A(void){ mod_1(); mod_2(); } ---------------------- そしてmain関数の中に、MやNと同様に『A();』を付け加えたとします。 すると、実行結果はこのようになります。 1>M.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に A.obj で定義されています。 1>M.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に A.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に A.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に A.obj で定義されています。 VC++はファイル名のアルファベット順にコンパイルするようですが、どちらにせよmain関数内で呼び出されていること以外何の関わりも無いはずのA、M、Nの中での出来事が、衝突する理由が、調べども思い当たりません。 お願いいたします。

  • DirectX サンプル エラー

    こんにちは。DirectXプログラミング初心者です。 Visual C++ 2005 Express Editonで開発しております。 Platfrom SDKもインストール済みです。 DirectX 9.0 SDKの最新版のサンプルをコンパイルしようとすると、 fatal error C1083: include ファイルを開けません。'dimm.h': No such file or directory とエラーがでてコンパイル出来ません。 また、工学社の「DirectX9 DirectX Graphics」という本に付属しているDirectX 9.0 SDK(December 2004)をインストール(新しいSDKを消して)して、付属のサンプルをコンパイルすると、 DXGSample01.obj : error LNK2019: 未解決の外部シンボル _DXTraceW@20 が関数 "long __cdecl InitApp(struct HINSTANCE__ *)" (?InitApp@@YAJPAUHINSTANCE__@@@Z) で参照されました。 DXGSample01.obj : error LNK2019: 未解決の外部シンボル _D3DXCreateSprite@8 が関数 "long __cdecl InitDXGraphics(void)" (?InitDXGraphics@@YAJXZ) で参照されました。 DXGSample01.obj : error LNK2019: 未解決の外部シンボル _D3DXCreateTextureFromFileW@12 が関数 "long __cdecl InitDXGraphics(void)" (?InitDXGraphics@@YAJXZ) で参照されました。 DXGSample01.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitDXGraphics(void)" (?InitDXGraphics@@YAJXZ) で参照されました。 Debug/DXGSample01.exe : fatal error LNK1120: 外部参照 4 が未解決です。 と出てきます。 コンパイラの方の「プロパティ」→「構成プロパティ」→「リンカ」→「入力」の「追加の依存ファイル」に d3d9.lib d3dx9dt.lib dxerr9.lib dxguid.lib の4つは追加済みです。 インクルードパス・ライブラリパスがおかしいのでしょうか? ご回答お願いいたします。

  • VS2003から2008への変換で起きる問題の解決策

    現在Visual Studio 2003で組んだプログラムを2008に変換しています. しかし,変換をすると 下記のようなエラーが表示されコンパイルできません 1>fbxsdk_md.lib(ksystem.obj) : error LNK2019: 未解決の外部シンボル __imp___winmajor が関数 "bool __cdecl KLib_GetOSVersion(char *,int)" (?KLib_GetOSVersion@@YA_NPADH@Z) で参照されました。 1>fbxsdk_md.lib(ksystem.obj) : error LNK2019: 未解決の外部シンボル __imp___winminor が関数 "bool __cdecl KLib_GetOSVersion(char *,int)" (?KLib_GetOSVersion@@YA_NPADH@Z) で参照されました。 これを解決する方法はあるのでしょうか? いろんなところを見て回ったのですが求める答えがのっておらず困っています よろしくお願いします

  • C++のエラーの内容について

    質問させていただきます。 C++のエラーについて教えていただけないでしょうか? エラーの内容は以下の通りです。 リンク中... dsmceq.obj : error LNK2001: 外部シンボル ""int __cdecl colider(class Matrix &,class Matrix &,double,long &,class Matrix &,double,class SortList &)" (?colider@@YAHAAVMatrix@@0NAAJ0NAAVSortList@@@Z)" は未解決です dsmceq.obj : error LNK2001: 外部シンボル ""void __cdecl sorter(class Matrix &,double,class SortList &)" (?sorter@@YAXAAVMatrix@@NAAVSortList@@@Z)" は未解決です dsmceq.obj : error LNK2001: 外部シンボル ""double __cdecl rand(long &)" (?rand@@YANAAJ@Z)" は未解決です Debug/dsmceq.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー dsmceq.exe - エラー 4、警告 0 ライブラリが無いよと言っているのでしょうか? 開発環境は、Visual Studio 6.0です。 すみません、よろしくお願いします。

  • VC++でのリンクエラー [error LNK2005]

    VC++でMFCを使用してダイアログベースのEXEを 作成しています。 以下のクラスのメンバ関数などを使用して、色の操作をしています。 CDC::SetBkColor() CDC::SetTextColor() ビルド時、以下のリンクエラーとなりました。 ---------------------------------------------- nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMT.lib(delete.obj) で 定義されています Release/MenueTest.exe : fatal error LNK1169: 1 つ 以上の複数回定義されているシンボルが見つかりました link.exe の実行エラー ---------------------------------------------- MFC と C(?)のライブラリで delete()関数が競合しているようですが、これを回避する方法をご存知の方、ご教授願います。 <環境> OS:Windows2000 VC++6.0 <備考> リンクエラーになるのは以下の組み合わせです。 「MFCをスタティックリンクする+リリース版」 MFCをスタティックリンクしてもデバッグ版のビルドだとエラーになりません。 また、MFCをスタティックリンクしない場合もエラーにはなりません。 ただし、リンクエラーにならなかった場合、どちらのオブジェクトの delete()関数が呼ばれるか不明で、それが正しいのかも心配です。

  • VC++2005ExpressEditionでのエラー

    タイトルの通り、VC++2005EEでプログラムを作成しているのですが ビルド時にエラーが出てしまいます。 ------ ビルド開始: プロジェクト: Object, 構成: Debug Win32 ------ リンクしています... 3jjiki.obj : error LNK2019: 未解決の外部シンボル "int img_R" (?img_R@@3HA) が関数 "void __cdecl JikiLoad(void)" (?JikiLoad@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "int img_C" (?img_C@@3HA) が関数 "void __cdecl JikiLoad(void)" (?JikiLoad@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "struct BBB * bombig" (?bombig@@3PAUBBB@@A) が関数 "void __cdecl JikiInit(void)" (?JikiInit@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "struct BBB * bom" (?bom@@3PAUBBB@@A) が関数 "void __cdecl JikiInit(void)" (?JikiInit@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "struct SHOT_C * JitamaC" (?JitamaC@@3PAUSHOT_C@@A) が関数 "void __cdecl JikiShotC(void)" (?JikiShotC@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "struct CharaData CharaData" (?CharaData@@3U0@A) が関数 "void __cdecl JikiShotC(void)" (?JikiShotC@@YAXXZ) で参照されました。 3jjiki.obj : error LNK2019: 未解決の外部シンボル "struct SHOT_R * JitamaR" (?JitamaR@@3PAUSHOT_R@@A) が関数 "void __cdecl JikishotR(void)" (?JikishotR@@YAXXZ) で参照されました。 I:\Works\Projects\Object\Debug\Object.exe : fatal error LNK1120: 外部参照 7 が未解決です。 ビルドログは "file://i:\Works\Projects\Object\Object\Debug\BuildLog.htm" に保存されました。 Object - エラー 8、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== 未解決のシンボルと言われているものは全てヘッダーファイルにて extern int img_C; の様に宣言しています。 あれこれ弄って見たのですが全く進展しません。 アドバイスをお願いします。

  • LINKエラーについて

    リンクエラーが出て困っております。 アドバイスお願いします。 リンク中... Dlg11.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __cdecl CPOSPrinter::GetRuntimeClass(void)const " (?GetRuntimeClass@CPOSPrinter@@UBAPAUCRuntimeClass@@XZ) Dlg11.obj : error LNK2019: unresolved external symbol "public: void __cdecl CPOSPrinter::SetAsyncMode(int)" (?SetAsyncMode@CPOSPrinter@@QAAXH@Z) referenced in function "public: void __cdecl Dlg11::OnPrint(void)" (?OnPrint@CHandyDlg11@@QAA XXZ) 上記のようなエラー内容です。 インクルードするヘッダーが問題と思いますが。 アドバイスお願いいたします。

  • .exeファイルが開けません

    Visual C++ 2005 Express Editionを使用しています プログラムをコンパイルしてそのEXEファイルを友達に渡したんですが このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。 アプリケーションを再度インストールす事により問題が解決する場合があります。 と言うエラーが出るらしく実行できません 調べてみたらランタイムライブラリをマルチスレッド(/MT)にすると直るということはわかったんですが マルチスレッド(/MT)にするとエラーが出てしまいます main.obj : error LNK2005: "public: int __thiscall std::ios_base::width(int)" (?width@ios_base@std@@QAEHH@Z) は既に msvcprtd.lib(MSVCP80D.dll) で定義されています。 LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 libcpmtd.lib(xmbtowc.obj) : error LNK2001: 外部シンボル "__CrtDbgReportW" は未解決です。。 libcpmtd.lib(cin.obj) : error LNK2001: 外部シンボル "__CrtDbgReportW" は未解決です。 libcpmtd.lib(xmbtowc.obj) : error LNK2001: 外部シンボル "__malloc_dbg" は未解決です。 libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 libcpmtd.lib(xmbtowc.obj) : error LNK2001: 外部シンボル "__free_dbg" は未解決です。 C:\C++\計算\Debug\計算.exe : fatal error LNK1120: 外部参照 4 が未解決です。 エラーは文字数の関係で大幅に削ってあります 作成したプログラムも上げておきます http://www.uploda.net/cgi/uploader4/index.php?file_id=0000008742.exe よろしくお願いします

  • wsprintfのエラーについて

    Visual C++を使ってC++,Win32APIでプログラムしています。 ウィンドウ上に変数の値を表示したいのですが、うまくできません。 wsprintfを使うと以下のようなエラーがでてしまいます。 1>time.obj : error LNK2020: 未解決のトークン (0A000015) "extern "C" int __cdecl wsprintfW(wchar_t *,wchar_t const *,...)" (?wsprintfW@@$$J0YAHPA_WPB_WZZ) 1>time.obj : error LNK2020: 未解決のトークン (0A000016) "extern "C" int __cdecl wsprintfW(wchar_t *,wchar_t const *,...)" (?wsprintfW@@$$J0YAHPA_WPB_WZZ) 1>time.obj : error LNK2001: 外部シンボル ""extern "C" int __cdecl wsprintfW(wchar_t *,wchar_t const *,...)" (?wsprintfW@@$$J0YAHPA_WPB_WZZ)" は未解決です。 1>C:\Documents and Settings\home\My Documents\Visual Studio 2005\Projects\time\Debug\time.exe : fatal error LNK1120: 外部参照 3 が未解決です。 どのようにすればよいのでしょうか?または、他のやり方があるのでしょうか? お願いします。