トップページ > 過去ログ > 記事閲覧
DrawPixel
名前:天鳳 日時: 2008/04/19 19:55

DXライブラリの使い方のページに沿ってビルトしたのですが、エラーが出て実行できないので質問させていただきます。 何度か試したのですがどこが間違っているのかわかりません。 以下ログです。 1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------ 1>コンパイルしています... 1>DrawPixel.cpp 1>リンクしています... 1>DrawPixel.obj : error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 _WinMain@16 で参照されました。 1>DrawPixel.obj : error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。 1>DrawPixel.obj : error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。 1>LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です。 1>DxLib.lib(DxWin.obj) : error LNK2019: 未解決の外部シンボル _exit が関数 "int __cdecl InitializeWindow(void)" (?InitializeWindow@@YAHXZ) で参照されました。 1>libjpeg.lib(jerror.obj) : error LNK2001: 外部シンボル "_exit" は未解決です。 1>vorbisfile_static.lib(floor1.obj) : error LNK2001: 外部シンボル "_exit" は未解決です。 1>vorbisfile_static.lib(res0.obj) : error LNK2001: 外部シンボル "__fltused" は未解決です。 1>vorbisfile_static.lib(floor1.obj) : error LNK2001: 外部シンボル "__fltused" は未解決です。 1>vorbisfile_static.lib(floor0.obj) : error LNK2001: 外部シンボル "__fltused" は未解決です。 と延々と出て計246個エラーがでました。 よろしくお願いします。

Page: 1 | 2 |

Re: DrawPixel ( No.18 )
名前:管理人 日時:2008/04/20 03:52

おお、キャッシュからまだ辿れたのですね。了解です。 では今度は、Ver2.19bから Ver2.24c に変更した際のご確認ですが、 DGCAの自己解凍プログラムはどうやら同名のフォルダが既に存在すると正常に解凍が行われないようです。 なので、Ver2.19b を解凍した際に作成される DxLib_VC というフォルダが存在している状態で、 同じフォルダに Ver2.24c を解凍した場合は正常に解凍が行われていない可能性があります。 なので、もし宜しければ現在存在している DxLib_VC フォルダを一度削除して、再度 Ver2.24c を 解凍してみて頂けないでしょうか?
Re: DrawPixel ( No.19 )
名前:天鳳 日時:2008/04/20 04:05

上記の通りやってみましたが、変化は無いようです。
Re: DrawPixel ( No.20 )
名前:管理人 日時:2008/04/20 04:14

そうですか・・・ では今度は使い方の2をご確認下さい。 2.VisualC++ 2008 Express Edition でDXライブラリを使うための設定を行う  必要なアイテムが揃ったところで、今度は VisualC++ 2008 Express Edition の設定を少し変更して、DXライブラリのファイルにPC上の何処にあるプロジェクトからもアクセスできるようにします。  @ VisualC++ 2008 Express Edition のメニューの『ツール』→『オプション』を選びます。  A オプションウインドウの左側から『プロジェクトおよびソリューション』→                             『VC++ ディレクトリ』を選びます。  B 右側の『ディレクトリを表示するプロジェクト』から『インクルードファイル』を選びます。  C ディレクトリリストにDXライブラリのパッケージ内に入っている         『プロジェクトに追加すべきファイル_VC用』フォルダのパスを追加します。  D 『ディレクトリを表示するプロジェクト』を今度は『ライブラリファイル』にします。  E ディレクトリリストにCと同じく         『プロジェクトに追加すべきファイル_VC用』フォルダのパスを追加します。  F 『OK』ボタンを押して設定完了です。 確認しても駄目でしたら、DxLib_VCフォルダの中にある『プロジェクトに追加すべきファイル_VC用』の フォルダの中に以下のファイルがあるか、且つ更新日時とサイズが以下の通りかご確認下さい。 DxDirectX.h 146KB 2008/03/16 18:47 DxLib.h 150KB 2008/03/16 20:05 DxLib.lib 2644KB 2005/03/20 17:04 DxLib.txt 5KB 2008/03/16 18:47 DxLib_d.lib 2645KB 2008/03/16 20:43 DxUseCLib.lib 29KB 2008/03/16 20:43 DxUseCLib_d.lib 29KB 2008/03/16 20:43 libjpeg.lib 248KB 2006/06/04 11:01 libjpeg_d.lib 189KB 2007/12/23 01:01 libpng.lib 396KB 2007/12/22 23:56 libpng_d.lib 396KB 2007/12/24 20:52 ogg_static.lib 27KB 2006/06/04 11:08 ogg_static_d.lib 27KB 2007/12/23 00:32 vorbis_static.lib 225KB 2006/06/04 11:10 vorbis_static_d.lib 225KB 2007/12/23 00:54 vorbisfile_static.lib 31KB 2007/12/23 00:42 vorbisfile_static_d.lib 31KB 2007/12/23 00:39 ZLIB.LIB 99KB 2007/12/22 23:52 zlib_d.lib 99KB 2007/12/24 20:52
Re: DrawPixel ( No.21 )
名前:天鳳 日時:2008/04/20 04:25

使い方の2の方は問題ないです。 下のリストの方ですがサイズ、ファイル名共に問題ないのですが DxLib_d.libファイルの更新日時が2008/03/20 17:04となっていて上記の物とずれているようです。 あと一つ自分にとって不自然(的外れかもしれませんが・・)だと思うのは DirectXの保存されているフォルダ名がMicrosoft DirectX SDK (March 2008)となっていて、これだとバージョンがアップするたびに 登録先を変更しなければならないような気がするのですがこれは問題ないのでしょうか?
Re: DrawPixel ( No.22 )
名前:管理人 日時:2008/04/20 04:31

DxLib_d.lib の更新日時については私の書きミスです。申し訳ありません。orz DXライブラリは DirectX SDK は必要ないので不都合が無ければアンインストールしてしまって下さい。 手順2で VisualC++ 2008 Express Edition に登録しなくてはいけないのは DxLib_VC フォルダ内の 『プロジェクトに追加すべきファイル_VC用』なのですが、その点は問題無いでしょうか?
Re: DrawPixel ( No.23 )
名前:天鳳 日時:2008/04/20 04:37

いえ、こちらこそ夜遅くまで本当に申し訳ないです。orz アンインストール特に不都合はないので了解しました。 インクルードファイルとライブラリファイルのところに登録しているのは C:\Program Files\DxLib_VC\プロジェクトに追加すべきファイル_VC用 となっています。
Re: DrawPixel ( No.24 )
名前:管理人 日時:2008/04/20 04:41

了解です。 ・・・重要なことに気付きました。 Ver2.19b と Ver2.24c では使い方の説明文がかなり変更されています。 Ver2.19b ではライブラリのファイルをプロジェクトのフォルダにコピーする、という 記述があるのですが、Ver2.24c の使い方の説明ではその文面は無くなっています。 もしプロジェクトのフォルダに Ver2.19b のライブラリのファイルが存在して いましたら削除してみて頂けないでしょうか?
Re: DrawPixel ( No.25 )
名前:天鳳 日時:2008/04/20 04:51

ライブラリのファイルというのは先ほど管理人さんが書かれた↑のリストのことでしょうか? それならプロジェクトのフォルダには存在してないようです。。。
Re: DrawPixel ( No.26 )
名前:管理人 日時:2008/04/20 04:56

>ライブラリのファイルというのは先ほど管理人さんが書かれた↑のリストのことでしょうか? はい、上記に書かれたファイル群のことです。 >それならプロジェクトのフォルダには存在してないようです。。。 そうですか・・・ エラーの内容から察するに、恐らくVer2.19b版の DxLib.h がインクルードされ、リンクファイルは Ver2.24c版の DxLib.lib が使用されてしまっているようなのです。 もしまだ天鳳さんのPC上に Ver2.19b のファイルが残っていましたら、全て削除してしまって 頂けないでしょうか? また、確実に Ver2.24c 版のファイルをインクルード及びリンクする方法としては上記のリスト にあるファイルを全てプロジェクトのフォルダに(拡張子が sln のファイルがあるフォルダ) に コピーするという手もあります。 もし Ver2.19b のファイルを全て消してしまっても駄目でしたら、最終手段としてお試しに なってみてください。m(_ _)m
Re: DrawPixel ( No.27 )
名前:管理人 日時:2008/04/20 04:58

すいません、もう一つ試してみるべきことがありました。 上記最終手段を試される前に Visual C++ 2008 Express Edition で プロジェクトを開いた状態で「ビルド」→「ソリューションのリビルド」をお試しになってみて下さい。
Re: DrawPixel ( No.28 )
名前:天鳳 日時:2008/04/20 05:07

もう一度DxLib_VCフォルダを削除し、リビルドし直した所エラーに変化があったので以下に貼ります。 1>------ すべてのリビルド開始: プロジェクト: testt, 構成: Debug Win32 ------ 1>プロジェクト 'testt'、構成 'Debug|Win32' の中間出力ファイルを削除しています。 1>コンパイルしています... 1>DrawPixel.cpp 1>マニフェストをリソースにコンパイルしています... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>リンクしています... 1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(sprintf.obj) : error LNK2005: _sprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。 1>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(vsprintf.obj) : error LNK2005: _vsprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>LIBCMTD.lib(abort.obj) : error LNK2005: _abort は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に LIBCMTD.lib(typinfo.obj) で定義されています。 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMTD.lib(typinfo.obj) で定義されています。 1>LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>LINK : warning LNK4098: defaultlib 'LIBCMTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_execute_transformation が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_execute が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_adjust_parameters が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_request_workspace が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_setup が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _write_stdout が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_stdin が関数 _main で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_scan_script が関数 _parse_switches で参照されました。 1>libjpeg_d.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。 1>C:\Documents and Settings\**\My Documents\Visual Studio 2008\Projects\testt\Debug\testt.exe : fatal error LNK1120: 外部参照 9 が未解決です。 1>ビルドログは "file://c:\Documents and Settings\**\My Documents\Visual Studio 2008\Projects\testt\Debug\BuildLog.htm" に保存されました。 1>testt - エラー 39、警告 2 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========
Re: DrawPixel ( No.29 )
名前:管理人 日時:2008/04/20 05:09

見えてきました。 今一度 Debug プロジェクトの使用するランタイムライブラリが 『マルチスレッドデバッグ(/MTd)』になっているかご確認頂けますでしょうか? 恐らく現在は『マルチスレッド デバッグ DLL(/MDd』になっていると思います。 5.DXライブラリを使用するためのプロジェクトの設定を行う  早速プログラムを組みたいところですが、最初のプログラムファイル追加後はDXライブラリを使用するプログラムのコンパイルに必要なプロジェクトの設定を行います。  具体的には、DXライブラリはコンパイル時にマルチスレッド用ライブラリを使用するように設定されているので、DXライブラリを使用するソフトウエアも使用するライブラリをマルチスレッド用に変更する必要があります。   @ VisualC++ 2008 Express Edition のメニューの       『プロジェクト』→『(プロジェクト名) プロパティ』を選びます。     ((プロジェクト名)の部分は、今回は『test』になっている筈です)   A プロパティダイアログが開いたら、ダイアログの左のリストから      『構成プロパティ』→『全般』を選びます。   B ダイアログ右側に表示されている『文字セット』の項目を      『マルチ バイト文字セットを使用する』に変更します。   C 左側のリストから今度は『構成プロパティ』→『C/C++』→『コード生成』を      選びます。   D ダイアログ右側に表示されている『ランタイム ライブラリ』の項目を      『マルチスレッド デバッグ(/MTd)』に変更します。   E 次にダイアログ左上に表示されている『構成』の項目を『Release』に変更します。   F ダイアログ右側に表示されている『ランタイム ライブラリ』の項目を今度は      『マルチスレッド(/MT)』に変更します。   G 最後にダイアログの下の方にある『OK』を押してダイアログを閉じます。
Re: DrawPixel ( No.30 )
名前:天鳳 日時:2008/04/20 05:12

追記 上記の最終手段を別のプロジェクトを作ってやってみたところ無事に起動できました。 やはり管理人さんが言っている通りのようです。 ビルトするときにライブラリを読みにいく優先順位が自身のディレクトリ>登録した所ってことだと思うのですが、 他に読み取りにいくところはあるのでしょうか?
Re: DrawPixel ( No.31 )
名前:管理人 日時:2008/04/20 05:16

入れ違いになってしまったようですね。 4/20 05:09 のレスもご覧下さい。 > ビルトするときにライブラリを読みにいく優先順位が自身のディレクトリ>登録した所ってことだと思うのですが、 > 他に読み取りにいくところはあるのでしょうか? いえ、無いです。 優先順位としては 自身のディレクトリ>登録したディレクトリ(上から) なので、C:\Program Files\DxLib_VC\プロジェクトに追加すべきファイル_VC用 をリストの一番上にすれば自身のディレクトリの次に優先度の高い検索対象となります。
Re: DrawPixel ( No.32 )
名前:天鳳 日時:2008/04/20 05:16

すいません↑は更新する前に送信してしまいました。 確認しましたが、確かに『マルチスレッドデバッグ(/MTd)』になっているようです。
Re: DrawPixel ( No.33 )
名前:天鳳 日時:2008/04/20 05:18

優先順位についての説明ありがとうございました。 勉強になります。
Re: DrawPixel ( No.34 )
名前:管理人 日時:2008/04/20 05:21

不思議ですね、エラー出力に出ている LIBCMTD.lib は DLL ランタイムをリンクする 設定になっていなければ出現しないはずなのですが・・・ この設定は実際はソースファイル単位で設定できるようになっていますので、 ソリューションエクスプローラ(プロジェクトやプロジェクト内のファイルがフォルダ階層のように 表示されるVC2008EE上の子ウインドウ)に表示されている testプロジェクトと DrawPixel.cpp の どちらも『マルチスレッド デバッグ(/MTd)』が選択されているか確認してみて頂けないでしょうか?
Re: DrawPixel ( No.35 )
名前:天鳳 日時:2008/04/20 05:29

えと・・申し訳ないです・・ 2つプロジェクトを作っていて、test(最終手段を使った方)とtestt(普通のやり方でやっていた方) の内 testの方を先ほど確認して問題ないと書いたのですが・・・・ 見事にtesttの方が/MDdの方になってました・・・ こちらの不注意で時間と手間をかけさせて本当に申し訳なかったです・・orz ありがとうございました・・ 日本語ぐらいきちんと読んで欲しい・・>俺
Re: DrawPixel ( No.36 )
名前:管理人 日時:2008/04/20 05:36

なるほどそういうことでしたか。 とはいえ、こちらこそリビルドに早目に気付いていれば数時間早く解決できていたと思いますので、 時間が掛かったのは半分は私が原因です。orz 解決してなによりです。
Re: DrawPixel ( No.37 )
名前:天鳳 日時:2008/04/20 05:42

本当にありがとうございました。 色々弄ってみて使いこなせるよう勉強してみます!

Page: 1 | 2 |