ページ 1 / 1
Dxlib_d.libについて
Posted: 2012年10月01日(月) 13:00
by EKISUKE
ホーミングレーザーを作ろうと思い、
http://ktstg.blog.shinobi.jp/Entry/677/
ここのプロジェクトファイルを参考にしようとダウンロードをし、slnで開いたところDxLib.hが開けないということだったので、
学校でDxLib.hの入っているフォルダをコピーしプロジェクトにそのフォルダの中のファイルすべてを入れて実行したらエラーが出ました。
このエラーはどうすれば解決するでしょうか?学校のプロジェクトは正しくうごきます。
入れたファイルは下のものです。
DxDirectX.h
DxDrawFunc.lib
DxLib.h
DxLibW_d.lib
DxLib_d.lib
DxuseCLib_d.lib
libjpeg_d.lib
libpng_d.lib
libtheora_static_d.lib
vorbis_static_d.lib
vorbisfile_static_d.lib
zlib_d.lib
エラーは
1>DxLib_d.lib(DxFont.obj) : error LNK2005: "int __cdecl DxLib::CheckUTF16H(wchar_t)" (?CheckUTF16H@DxLib@@YAH_W@Z) は既に DxLibW_d.lib(DxFont.obj) で定義されています。
というような内容が連なっています。
なので、DxLib.hだけ残して、ほかのファイルを削除して実行すると、消したファイルが開けないというエラーがでました。
その開けないファイルを一つづつもどしてしていたら、結局消したファイル全部戻すことになりました。
最後のファイルまでもどすと↑のようなエラーがずらっと並びます。
これを解決する方法はありますか?
Re: Dxlib_d.libについて
Posted: 2012年10月01日(月) 14:28
by softya(ソフト屋)
DXライブラリのライブラリの設定をちゃんと行なってもらうしか無いと思います。
「DXライブラリ置き場 使い方説明」
http://homepage2.nifty.com/natupaji/DxLib/dxuse.html
Re: Dxlib_d.libについて
Posted: 2012年10月01日(月) 19:56
by EKISUKE
Visual stadio 2010の設定の仕方を見てやってみたのですが、ダメ見たいです。
なぜなのでしょうか・・・
相変わらず多重定義されているとでます。DxLib内のエラーのようですが、アンインストールして何回か試すしかないですかね
Re: Dxlib_d.libについて
Posted: 2012年10月01日(月) 20:39
by softya(ソフト屋)
EKISUKE さんが書きました:Visual stadio 2010の設定の仕方を見てやってみたのですが、ダメ見たいです。
なぜなのでしょうか・・・
相変わらず多重定義されているとでます。DxLib内のエラーのようですが、アンインストールして何回か試すしかないですかね
違うDXLIBがリンクされているような印象を受けますのでアンインストールは解決にはならないでしょう。
少なくともプロジェクトを新規で作って、ソースコードだけもっていけば問題は出ないはずです。
Re: Dxlib_d.libについて
Posted: 2012年10月01日(月) 22:10
by EKISUKE
できました。有難うございます。
原因は、学校でつかっているDxLibとプロパティで追加のインクルードファイル両方があったためだと思います。
学校で使っているほうを消して実行したらできました。しかし、学校では両方あるのに、多重定義にならないのはなぜでしょうかね。2008のだと大丈夫なのでしょうか
それと、ほかのプロジェクトで作ったところ、(winプロジェクト)
IntelliSense: 型 "const char *" の引数は型 "const TCHAR *" のパラメーターと互換性がありません
というエラーがでます。元のほうではでないのですが、Winプロジェクトだとどこか変わるのでしょうか?
その部分のプログラム
コード:
DrawFormatString(520,440,color_white,"FPS %.1f",Fps); //fpsを表示
DrawFormatString(520,420,color_white,"-FPS表示-",Fps); //fpsを表示
//////////////////////////////////////////////////////////////////
DrawString( 0 , 0 , "↑↓←→で自機移動" , color_white );
DrawString( 0 , 20 ,"Zキーでホーミング発射" , color_white );
ここの" "で囲んでいる部分に波線がでてエラーが表示されます。
Re: Dxlib_d.libについて
Posted: 2012年10月01日(月) 22:14
by softya(ソフト屋)
2010以降と2008以前ではプロジェクトの作り方が変わっているので、それがあると思います。
あとTCHARはプロジェクトのプロパティで文字セットをマルチバイト文字に変更していますか?
「DXライブラリ置き場 使い方説明」
http://homepage2.nifty.com/natupaji/DxL ... ss.html#R4
Re: Dxlib_d.libについて
Posted: 2012年10月02日(火) 00:14
by EKISUKE
いけました有難うございます。
文字セットをマルチにすると、文字が日本語でも対応ができるという認識であってるでしょうか?
Re: Dxlib_d.libについて
Posted: 2012年10月02日(火) 00:31
by softya(ソフト屋)
EKISUKE さんが書きました:いけました有難うございます。
文字セットをマルチにすると、文字が日本語でも対応ができるという認識であってるでしょうか?
いえ、UNICODEでも日本語です。
マルチバイトはSHIFT-JIS文字コード、UNICODEは16bitのワイド文字コードになりますので書き方が変わるだけです。
下記サイトをお読みください。
「今さら聞けない、教えてもらえない!! Unicode /マルチバイト文字対応 国際化VC ++ プログラミングの基礎!! - JAPAN Platform SDK(Windows SDK) Support Team Blog - Site Home - MSDN Blogs」
http://blogs.msdn.com/b/japan_platform_ ... de-vc.aspx
「_T("")マクロだのL""マクロだのLPCTSTRだのの世界一詳しい解説」
http://victreal.com/Junk/_T/index.html
Re: Dxlib_d.libについて
Posted: 2012年10月10日(水) 10:22
by EKISUKE
こちらのサイトを読ませていただきました。
UNICODEは文字のByteによって区別しない考え方で
マルチバイトはByteによって区別する考え方のことですね。
だからconst char で渡しているのでconst TCHARでは互換性がないのでマルチバイトにして渡されるほうもconst charにしたということであっているでしょうか?
Re: Dxlib_d.libについて
Posted: 2012年10月10日(水) 10:51
by softya(ソフト屋)
UNICODEはwchar型でマルチバイトはchar型を使います。
TCHARはプロジェクトの設定次第でwcharかcharに置き換わるのですが、wcharとcharを1つのプロジェクトに混ぜるのは色々問題を引き起こします。
基本はマルチバイト文字を使うで良いと思いますので、自分で意図的にwchar型とchar型の変換ができる文字コードに関する知識を身につけるまではUNICODEとTCHARとwcharは気をつけないといけないと覚えておいてください。
Re: Dxlib_d.libについて
Posted: 2012年10月10日(水) 11:25
by EKISUKE
わかりました。有難うございます。
DXlibだけでなくほかのことについても答えていただき非常に勉強になりました。