トップページ > 過去ログ > 記事閲覧
リンクエラー
名前:超初心者 日時: 2007/02/08 16:20

C++を使い始めて1年くらいの超初心者です。14歳からのゲームプログラミングを見ながらゲームを作ろうと思ったのですが、一回プログラムを書いて、次にコードを追加してコンパイル使用しようとするとリンクエラーが出てしまいます。どのようにしたらいいでしょうか。 マイクロソフトvisualc++6.0 エラー内容は ibjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_jtransform_execute_transformation" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_jcopy_markers_execute" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_jtransform_adjust_parameters" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_jtransform_request_workspace" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_jcopy_markers_setup" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_write_stdout" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_read_stdin" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_read_scan_script" は未解決です libjpeg.lib(jpegtran.obj) : error LNK2001: 外部シンボル "_keymatch" は未解決です Debug/jiki2.exe : fatal error LNK1120: 外部参照 9 が未解決です。 link.exe の実行エラー jiki2.exe - エラー 10、警告 0 プロジェクトはこちらのホームページを見て作りました。

Page: 1 |

Re: リンクエラー ( No.1 )
名前:wiz 日時:2007/02/08 18:25

libjpeg.libのパスが通っていないか、 もしくはプロジェクトにlibjpeg.libを 追加していないとかかな。 追加してないだけの場合は、 以下をソースに書いてもOK。 /* リンクオプションについか */ #pragma comment(lib, "libjpeg.lib") パスが無い場合は。。。 /*プロジェクトのみにLIBのパスを登録*/ こっちは新しく作るたびに設定しないといけない。 [プロジェクト]→[設定]→[リンク]→カテゴリ[インプット]→[追加ライブラリのパス] にlibファイルがおいてあるパスを指定する。 /*ユーザアカウントにLIBのパスを登録*/ こっちは使用するユーザが変わらない限り外れない。 [ツール]→[オプション]→[ディレクトリ]→表示するディレクトリ[ライブラリファイル]→[ディレクトリ] にlibファイルがおいてあるパスを指定する。 こんな感じかな。。。
Re: リンクエラー ( No.2 )
名前:超初心者 日時:2007/02/08 21:31

早々とご連絡ありがとうございます。 早速試してみました。 新しいプロジェクトを作り直して、最初からlibipeg.libを追加し、さらに「プロジェクト」→「設定」→「リンク」→「インプット」→「追加ライブラリのパス」にパスを指定しました。 これでコードを一度ビルドし、書き換えてみるとうまくいきました。 しかし、エラーがたってしまった元のプロジェクトは、、教えていただいた三つの方法を試してもエラーが消えませんでした。 でも、先に進めそうなので、新しいプロジェクトでやってみます。ありがとうございました。
Re: リンクエラー ( No.3 )
名前:超初心者 日時:2007/02/09 22:49

すみません。 またエラーが立ってしまいました。 夜、パソコンを切って、また今日続きをやろうと思い ワークスペースを呼び出して(×××.dsw) コードを書き換え再度ビルドしようとすると また同じリンクエラーが立ってしまいました。 ビルドする前にヘッダファイルとlibjpeg.libを プロジェクトに追加しなければならなかったのでしょうか。 一度、このエラーがたつと、プロジェクトを新しくしない限りもう動きません。 初心者なので何が悪いのか、よく判りません。 どなたか、こういう現象について、ご存知でしたら 教えていただけませんでしょうか。 ちなみに、プログラムは「14歳から・・・」の93ページのコードです。
Re: リンクエラー ( No.4 )
名前:管理人 日時:2007/02/10 16:35

 超初心者さん始めまして、DXライブラリの管理人です。  DXライブラリのパッケージの中にある「サンプルプログラム実行用フォルダ」 の中のプロジェクト(DxLib.dsw)も、正常にコンパイル出来ないのでしょうか? 宜しければご確認ください。m(_ _)m
Re: リンクエラー ( No.5 )
名前:超初心者 日時:2007/02/10 18:11

管理人さん ご連絡ありがとうございます。 「サンプルプログラム実行用フォルダ」内の プロジェクトを実行してみました。 正常にビルドできました。 ですので、(しつこいようですが)「14歳から」に したがって、プログラムを書き換えてみました。 最初forを入れた文にしました。 次にwhileで書き替えました。 さらに構造体に書き換えました。 ここまでくるのに、自分で作ったプロジェクトは 4つくらいだめになったと思います。 しかし、サンプルプログラムは丈夫(?)でした。 以下サンプルを書き換えたコードと 自作のエラーがたったコードを添付します。 (エラーのたったコードでも、プロジェクトを 新しくすると一度は動きます。 ちょっとかなしいです。) // ここにサンプルプログラムをペーストしてください // 初期状態では LoadGraphScreen のサンプルプログラムが入力されています。 #include "DxLib.h" struct CharData { int x; int y; int girl; }; struct CharData jikidata; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // BMP画像の表示 jikidata.girl = LoadGraph( "test1.bmp" ) ; jikidata.x =0; SetDrawScreen(DX_SCREEN_BACK); while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){ ClsDrawScreen(); int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if(key & PAD_INPUT_LEFT) jikidata.x = jikidata.x - 4; if(key & PAD_INPUT_RIGHT) jikidata.x = jikidata.x + 4; DrawGraph(jikidata.x, 0, jikidata.girl, TRUE); ScreenFlip(); } WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } こちらが自作です。 #include "DxLib.h" //#pragma comment(lib."libjpeg.lib") struct CharData { int x; int y; int ghandle; }; struct CharData jikidata; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 return (-1); // エラーが起きたら直ちに終了 jikidata.ghandle = LoadGraph( "media\\test_jiki.bmp" ) ; jikidata.x = 0; jikidata.y = 0; // 描画先画面を表にする SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClsDrawScreen(); DrawBox(270,190,370,290,GetColor(255,0,0),TRUE); int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if(key & PAD_INPUT_UP) jikidata.y = jikidata.y - 4; if(key & PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4; if(key & PAD_INPUT_LEFT) jikidata.x = jikidata.x - 4; if(key & PAD_INPUT_RIGHT) jikidata.x = jikidata.x + 4; DrawGraph( jikidata.x , jikidata.y, jikidata.ghandle , TRUE) ; // 裏画面の内容を表画面に反映します ScreenFlip() ; } WaitKey(); DxLib_End() ; // DXライブラリ使用の終了処理 return (0) ; // ソフトの終了 }
Re: リンクエラー ( No.6 )
名前:超初心者 日時:2007/02/10 20:38

すみませんでした。 エラーの原因がわかりました。 先程、メールを書いていて気がつきました。 たぶんワークスペースではなくてファイルから コードを開いていた時があったようです。 お手数をかけて申し訳ありませんでした。 もし、ワークスペースから開いてもエラーが たつの確認できた場合には、もう一度ご連絡いたします。 すみませんでした。 あと、ひとつ質問があります。 Cの講義を受けた時に 一度プロジェクトを作って コードを書き、クラスを削除して 新たにファイルだけを作り、ビルドするやり方を 習ったことがあります。 これをDXライブラリでやると、エラーが たってしまうようですが、 この方法はだめでしょうか。
Re: リンクエラー ( No.7 )
名前:管理人 日時:2007/02/13 14:28

 シュンさんどうも、DXライブラリの管理人です。  原因が分かった様で何よりです。 > 一度プロジェクトを作って > コードを書き、クラスを削除して > 新たにファイルだけを作り、ビルドするやり方を > 習ったことがあります。  うーん、どのような手法なのか分かりません。 宜しければ各手順の詳細を教えて頂けないでしょうか?

Page: 1 |