Effekseer関係の処理でGetUseDirect3DDevice9()を呼ばなければならないのですが、未解決ですとのエラーメッセージが出ます。
以下が表示されたメッセージです。
エラー 1 error LNK2019: 未解決の外部シンボル "class DxLib::D_IDirect3DDevice9 * __cdecl DxLib::GetUseDirect3DDevice9(void)" (?GetUseDirect3DDevice9@DxLib@@YAPAVD_IDirect3DDevice9@1@XZ) が関数 "void __cdecl DeviceRestoreFunction(void *)" (?DeviceRestoreFunction@@YAXPAX@Z) で参照されました。
開発環境はvisual stdio 2013ですが、Effekseerの都合上プラットフォーム ツールセットを2010のものにしています。
DXライブラリのバージョンは最新のもの(8/20現在)を、Effekseerも同様に最新のものを使用しております。
未解決です というのはヘッダー部分にはそれが記述されているがソース部分にそれがない、という意味にとらえていたのですが・・・
ライブラリでもそういったことは起こり得るのでしょうか?
それについても教えていただければ幸いです。
GetUseDirect3DDevice9()が未解決ですと表示されます。
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
それであっています。libファイルの設定をしていない/失敗していると思うので、HI魔神 さんが書きました:未解決です というのはヘッダー部分にはそれが記述されているがソース部分にそれがない、という意味にとらえていたのですが・・・
プロパティ→リンカー→入力→追加の依存ファイル か、pragma commentで追加する。この時、
リンカー→全般→追加のライブラリディレクトリ にディレクトリ(DebugならDebug, ReleaseならReleaseフォルダ)を指定する。
で行けると思います。
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
ちょっと追記すると、libファイルにはソース部分に記述されていた分が入っています。
そのためlibファイルを指定していないと、ソースファイルに記述されていないときと同じエラーが出ます。
そのためlibファイルを指定していないと、ソースファイルに記述されていないときと同じエラーが出ます。
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
追加のライブラリ ディレクトリへの追加はしてあるのですが・・・
やはりエラーは現れます。
私の認識は合っていましたか。ありがとうございます。
その関数以外は機能しているので、バージョンの問題かとも考えたのですが、上記の通り追加ライブラリはすべて最新のものです。
やはりエラーは現れます。
私の認識は合っていましたか。ありがとうございます。
その関数以外は機能しているので、バージョンの問題かとも考えたのですが、上記の通り追加ライブラリはすべて最新のものです。
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
リビルドはしてるのですよね?HI魔神 さんが書きました:追加のライブラリ ディレクトリへの追加はしてあるのですが・・・
やはりエラーは現れます。
一応念のため。
written by へにっくす
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
はい。きちんとやってます。
ファイルを公開したいところですが容量とライブラリの著作権的なやつが心配でためらっております。
ライブラリたちの相性の問題なのでしょうか・・・?
ファイルを公開したいところですが容量とライブラリの著作権的なやつが心配でためらっております。
ライブラリたちの相性の問題なのでしょうか・・・?
Re: GetUseDirect3DDevice9()が未解決ですと表示されます。
8/20現在の最新というと、3.12cですが。
DXLIB 3.12cの、DxLib.libでシンボル名(class DxLib::D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void))を検索してみたら確かにないね。
DXLIB 3.12aのDxLib.libならありましたが。
3.12aにあったシンボル名class DxLib::D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void)が、3.12cだとclass D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void)に変わっています。
DxLib.hを比較してみて判明しましたが、どうやら
DX_USE_NAMESPACEを定義するようになってますね。
DXライブラリの更新履歴
でもリビルドで解決するはずだけどなあ・・・
本当に最新のヘッダーを見てますか?
DxLib.hを開いて、DXLIB_VERSION_STRで検索すると、バージョンの文字列が見れますが、それは3.12cですか?
3.12cなのであれば、本家に質問した方がよいかもしれません。
3.12aで実行ファイルが作成できていたのですが、3.12cでリンクエラーになります。という感じで。
(本家で質問したらこちらにもリンクをはってくださいね)
DXLIB 3.12cの、DxLib.libでシンボル名(class DxLib::D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void))を検索してみたら確かにないね。
DXLIB 3.12aのDxLib.libならありましたが。
3.12aにあったシンボル名class DxLib::D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void)が、3.12cだとclass D_IDirect3DDevice9 const * __cdecl DxLib::GetUseDirect3DDevice9(void)に変わっています。
DxLib.hを比較してみて判明しましたが、どうやら
DX_USE_NAMESPACEを定義するようになってますね。
DXライブラリの更新履歴
3.12b (略)
コンパイル用定義 DX_USE_NAMESPACE を DxCompileConfig.h に追加。
( 設定を変更してコンパイルする場合は DxLib.lib,
DxDrawFunc.lib, DxUseCLib.lib などすべてコンパイルする
必要があります )
本当に最新のヘッダーを見てますか?
DxLib.hを開いて、DXLIB_VERSION_STRで検索すると、バージョンの文字列が見れますが、それは3.12cですか?
3.12cなのであれば、本家に質問した方がよいかもしれません。
3.12aで実行ファイルが作成できていたのですが、3.12cでリンクエラーになります。という感じで。
(本家で質問したらこちらにもリンクをはってくださいね)
written by へにっくす