• ベストアンサー

C言語についてです。

プログラムを実行しようとすると、 main.obj : error LNK2001: 外部シンボル ""void __cdecl DrawGameOver(void)" (?DrawGameOver@@YAXXZ)" は未解決です。 fatal error LNK1120: 外部参照 1 が未解決です。 とでてしまいます。 どうすれば解決するのでしょうか? 初心者なのでなるべく分かりやすくお願いします。

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

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.4

     : void GoGameOver(){ g_gamestate = GAME_OVER; } void DrawGameOvr(){  ←★ } ★の行eが抜けてる。 ×DrawGameOvr ○DrawGameOver

yakutibimutaito
質問者

お礼

ほんっとうにありがとうございました。ちょっとしたミスですた。直したらできるようになりました。

その他の回答 (3)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

DXライブラリは見た目はC言語ですが実際にはC++です。 なのでエラーはC++のエラーが出ます。 ソースコードを見る限りDrawGameOver()関数の実体が見当たりません。 でも、ソースコードはDrawGameOver()を呼び出しているのでエラーになっています。

yakutibimutaito
質問者

お礼

ちょっとしたDrawGameOver()のスペルミスでした。 参考になりました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

処理系不明ですが... > ?DrawGameOver@@YAXXZ こんなシンボルが出てくることからして、Cではない可能性大です。 C++のライブラリを無理やりCから使おうとしたとか、そういうことも考えられます。 詳しい状況を補足してください。

yakutibimutaito
質問者

お礼

補足したら他の人からとてもいい回答が来ました。 補足してよかったです。

yakutibimutaito
質問者

補足

visual c++ 2010 expressとDXライブラリをダウンロードをダウンロードしました。 #include <DxLib.h> int g_lasttime = 0; float g_frametime = 0; enum GameState{ GAME_TITLE, GAME_MAIN, GAME_CLEAR, GAME_OVER } g_gamestate = GAME_TITLE; int ghandle[6]; float x = 0, y = 0; void GoGameTitle(); void DrawGameTitle(); void GoGameMain(); void DrawGameMain(); void GoGameClear(); void DrawGameClear(); void GoGameOver(); void DrawGameOver(); int WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int nC) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; int ghandle = LoadGraph("media\\testplayer.png "); int x = 0, y = 0; SetDrawScreen( DX_SCREEN_BACK ); g_lasttime = GetNowCount() & INT_MAX; while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { int curtime = GetNowCount() & INT_MAX; g_frametime = (float)(curtime - g_lasttime) / 1000.0f; g_lasttime = curtime; ClsDrawScreen(); switch(g_gamestate){ case GAME_TITLE: DrawGameTitle(); break; case GAME_MAIN: DrawGameMain(); break; case GAME_CLEAR: DrawGameClear(); break; case GAME_OVER: DrawGameOver(); break; } ScreenFlip(); } DxLib_End(); return 0; } void GoGameTitle(){ g_gamestate = GAME_TITLE; } void DrawGameTitle(){ } void GoGameMain(){ g_gamestate = GAME_MAIN; } void DrawGameMain(){ int key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ); float mv = 80.0f * g_frametime; if(key & PAD_INPUT_UP) y -= mv; if(key & PAD_INPUT_DOWN) y += mv; if(key & PAD_INPUT_LEFT) x -= mv; if(key & PAD_INPUT_RIGHT) x += mv; if(key == 0){ DrawGraph((int)x, (int)y, ghandle[0], TRUE); } else { int animpat = (g_lasttime / (1000 / 12)) % 4; DrawGraph((int)x, (int)y, ghandle[1 + animpat], TRUE); } } void GoGameClear(){ g_gamestate = GAME_CLEAR; } void DrawGameClear(){ } void GoGameOver(){ g_gamestate = GAME_OVER; } void DrawGameOvr(){ } と書きました。見にくくて本当にすいません。他に必要なことがあったら書いてください。

  • morchin
  • ベストアンサー率16% (212/1281)
回答No.1

DrawGameOver@@YAXXZというシンボルを含むオブジェクトかライブラリがリンクされていないのが問題。 オブジェクトかライブラリをリンカのオプションに追加してやる必要がある。

yakutibimutaito
質問者

補足

本当に申し訳ありませんが、さっぱりわかりません。 どうやってリンカのオプションに追加という作業をするのでしょうか?

関連するQ&A

  • DB2付きのC言語がコンパイルできません。

    CはMicrosoftVisualStudio2012 DBはIBM DB2 です。 同じ環境でコンパイル実行できていたのに、 PCがおかしくなったのでフォーマットして入れなおしたらコンパイルができなくなりました。 よろしくおねがいします。 ソースはこちらです。 #include <stdio.h> exec sql include sqlca; void main() { exec sql connect to sample; if(SQLCODE!=0) { printf("SQL CONNECT %d", SQLCODE); } else { exec sql update Test1 set col2 = 'bababa'; if(SQLCODE!=0) printf("SQL UPDATE %d", SQLCODE); } exec sql connect reset; } コンパイルコマンドです db2 connect to sample db2 prep Test11.sqc bindfile db2 bind Test11.bnd cl -Z7 -c -W2 -D_X86_=1 -DWIN32 -I"c:\Program Files\IBM\SQLLIB\include" Test11.c link -debugtype:cv -outTest11.exe %1.obj "c:\Program Files\IBM\SQLLIB\lib\db2api.lib" エラーメッセージです Test11.obj : error LNK2019: 未解決の外部シンボル _sqlaaloc@16 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlacall@20 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlasetdata@24 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastop@4 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastrt@12 が関数 _main で参照されました。 Test11.exe : fatal error LNK1120: 5 件の未解決の外部参照

  • 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; の様に宣言しています。 あれこれ弄って見たのですが全く進展しません。 アドバイスをお願いします。

  • 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です。 すみません、よろしくお願いします。

  • C++STLについての質問です。

    C++STLについての質問です。 Visual C++ 2008 Express Edition を使用してDirectXアプリケーションを 作成しています。 その折、std::listテンプレートを使用する機会があったのですが、このリストを 使用しますと、 リンクしています... LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 libcpmtd.lib(stdthrow.obj) : error LNK2019: 未解決の外部シンボル __CrtDbgReportW が関数 "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPB_W0I@Z) で参照されました。 libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 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) で参照されました。 fatal error LNK1120: 外部参照 3 が未解決です。 とのエラーが吐かれます。 ネットで検索すると、ソリューション構成をDebugからReleaseにすれば良いとの記述が ありましたので、実行してみました。しかし、 リンクしています... error LNK2001: 外部シンボル "_D3DXCreateTextureFromFileExW@56" は未解決です。 error LNK2001: 外部シンボル "_D3DXCreateSprite@8" は未解決です。 error LNK2001: 外部シンボル "_D3DXGetImageInfoFromFileW@8" は未解決です。 error LNK2001: 外部シンボル "_Direct3DCreate9@4" は未解決です。 fatal error LNK1120: 外部参照 4 が未解決です とのエラーが吐かれてしまいました。 尚、コード生成モードは、マルチスレッド(/MT)で作成しています。 どなたか、この問題を解決する方法をご存知ないでしょうか? よろしくお願いします。

  • OpenNIの動作について

    OpenNIをvisual studio2008で動作させようとしています。 そこで以下のメッセージが出て動作しません。インクルードファイルのリンクはしたつもりなのですが、参照できていないのでしょうか。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceCreateStream" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniFrameRelease" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceIsPropertySupported" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamGetSensorInfo" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceClose" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniShutdown" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniGetExtendedError" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniWaitForAnyStream" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniInitialize" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamStart" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceGetInfo" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamIsPropertySupported" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceOpen" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceGetSensorInfo" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamDestroy" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamStop" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamReadFrame" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceIsCommandSupported" は未解決です。 1>C:\Users\sakata\Documents\Visual Studio 2008\Projects\openNI_test\Release\openNI_test.exe : fatal error LNK1120: 外部参照 18 が未解決です。 以上です。 追加のインクルードディレクトリには C:\Program Files\OpenNI2\Include\Win32 C:\Program Files\OpenNI2\Include 追加のライブラリディレクトリには "C:\Program Files\OpenNI2\Lib" を追加しました。 環境変数はOpenNIをインストールしたときに勝手に追加されたので間違っていないと思います。 環境は以下です。 OS:Windows7 32bit OpenNIはOpenNI2を入れています。(2013年6月現在で最新?) もちろん32bit版です。 動作カメラはXtionです。ドライバインストール済みで、サンプルプログラムの.exeファイルでの動作は確認しています。 他の質問でx64でビルドすれば通るなどと書いてありますが、それは64bit版OSの話ですよね? 原因わかる方、回答お願いします。

  • c言語とfortranの混在プログラミング

    cとfortranの混合プログラミングについての質問です。環境はWindows上でVisual studio 2005/Intel fortran 9.1です。 --c側(ctest6.cpp) #include <stdio.h> extern "C" void __stdcall fsub(){ printf("TEST PROGRAM!!\n"); } --fortran側(ftest6.f90) PROGRAM MAIN call FSUB END --エラー ctest6.obj:error LNK2019:未解決の外部シンボル_fsubが関数_mainで参照されました。 ftest6.obj:error LNK2019:未解決の外部シンボル_FSUBが関数_MAIN_で参照されました。 ftest6.exe:fatal error LNK1120:外部参照2が未解決です。 ---- __stdcall fsub()"の部分を過去の質問等を参考にし、色々(cのfsubを_fsubやfsub_にしたりと"_"を追加したり)と試してみたりしたのですが、上記のエラーがでてしまいます。fortran側で_FSUBと記入できない点が課題な気がしているのですが、ご教授いただけないでしょうか?

  • 猫でもわかるWindowsプログラムについて・・

    いま猫でもわかるWindowsプログラムという本でCの勉強をしているのですが。 一番最初の問題で詰まりました教えてください。 リンク中... 何もないプログラム.obj : error LNK2001: 外部シンボル ""int __cdecl InitINstance(struct HINSTANCE__ *,int)" (?InitINstance@@YAHPAUHINSTANCE__@@H@Z)" は未解決です 何もないプログラム.obj : error LNK2001: 外部シンボル ""long __stdcall wndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?wndProc@@YGJPAUHWND__@@IIJ@Z)" は未解決です LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です Debug/何もないプログラム.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー 何もないプログラム.exe - エラー 4、警告 0 エラーの意味がわかりません。教えてください、何もないプログラムというのはプログラムの名前です、

  • ビルドエラー

    現在wrapi(http://sysnet.ucsd.edu/pawn/wrapi/download.html)を使いサンプルプログラムWrapiTest.cpp をVC++6.0で実行を試みています。しかしコンパイルは通るのですビルドがうまくいきません。 ビルドしようとすると以下のエラーが出力しました。 リンク中... WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetPacketStats(struct DOT_11_STATS *)" (__imp_?WRAPIGetPacketStats@@YAJPAUDOT_11_STATS@@@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetAssociatedAP(unsigned char * const)" (__imp_?WRAPIGetAssociatedAP@@YAJQAE@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetRTSThreshold(unsigned long *)" (__imp_?WRAPIGetRTSThreshold@@YAJPAK@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPISetSSId(unsigned char *,unsigned long &)" (__imp_?WRAPISetSSId@@YAJPAEAAK@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetSSId(unsigned char *)" (__imp_?WRAPIGetSSId@@YAJPAE@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIOpenNdisDevice(unsigned short *)" (__imp_?WRAPIOpenNdisDevice@@YAJPAG@Z)" は未解決です (省略) Debug/WrapiTest.exe : fatal error LNK1120: 外部参照 7 が未解決です。 何が原因なのか教えていただけないでしょうか。 よろしくお願いします。

  • C++でのエラー LNK2001

    C++でプログラミング中ビルドしたところ以下のようなエラーが出ました。解決方法がわかりません。どのようにしたら解決できるのでしょうか? ---------------------------------------------------------------- コンパイル中... sample01.cpp リンク中... sample01.obj : error LNK2001: 外部シンボル "__imp__dispose_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_copyright_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_version_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__initialize_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__close_reader_writer" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_last_error_types" は未解決です Debug/Sample01.exe : fatal error LNK1120: 外部参照 6 が未解決です。 link.exe の実行エラー

  • HTMLファイルのソースを読み出すプログラム

    HTMLファイルのソースを読み出すプログラムで実行したところ、以下↓のようなエラーが出ました。 readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetReadFile@16" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetCloseHandle@4" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetOpenUrlA@24" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetOpenA@20" は未解決です Debug/readhrml.exe : fatal error LNK1120: 外部参照 4 が未解決です。 一応、参考書と照らし合わせてみたのですが、プログラム自体には誤りがないとは思います。このエラーの原因は何か、そしてプログラムを実行するにはどのようにすればいいのか教えてください。C言語の勉強をしているんですが、C言語の知識はそんなにありませんので、なるべく専門用語などは砕いたような形で表現していただければ幸いです。どうかお願いします。

専門家に質問してみよう