ページ 11

未解決の外部シンボル

Posted: 2016年8月02日(火) 19:46
by つくばさん
いまc++を使って弾幕stgを作っているものです。
そこで自分だけで解決できないエラーが発生したため質問をしました。
コードをほとんどいじっていないのに次のようなエラーが発生しています。

出力
1>------ ビルド開始: プロジェクト:THLIK, 構成:Debug Win32 ------
1>Zako_01_1.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>Zako_01_2.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>Zako_01_3.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>Bullet.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>etbreak.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>PlOption00.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>Zako_01_0.obj : error LNK2001: 外部シンボル ""int __cdecl DxLib::DrawCircle(int,int,int,int,int)" (?DrawCircle@DxLib@@YAHHHHHH@Z)" は未解決です。
1>Zako_01_1.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>Zako_01_2.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>Zako_01_3.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>Bullet.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>etbreak.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>PlOption00.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>Zako_01_0.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z)" は未解決です。
1>main.obj : error LNK2019: 未解決の外部シンボル "int __cdecl DxLib::ClearDrawScreen(struct tagRECT *)" (?ClearDrawScreen@DxLib@@YAHPAUtagRECT@@@Z) が関数 "int __cdecl ProcessLoop(void)" (?ProcessLoop@@YAHXZ) で参照されました。
1>E:\project\THLIK\Debug\THLIK.exe : fatal error LNK1120: 3 件の未解決の外部参照
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

開発環境は
win 10 home
vc++2015 community
DxLib Ver 3.16d
です。 
よろしくお願いします。
初心者ですがよろしくお願いします。

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 21:44
by プラム
コードを見ていないので何とも言えませんが、
DxLibの関数のコードが見当たらないって言ってるようですね。
たぶんDxLibがちゃんと読み込めてないからだと思います。

前までしっかり動いていたのであれば、DxLibがインストールされているファイルを削除したり、移動させたのが原因か、設定がしっかりできていないのが原因かもしれません。

ここでも見て設定しなおすともしかしたら上手くいくかもしれません。

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 21:58
by つくばさん
ノウル さん返信ありがとうございます。
dxlibを入れ直しプロパティの設定を見直してみましたが、
同じようなエラーが発生してしまいます。どういうことでしょうか?

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 21:59
by つくばさん
よく見たところ少しエラーログが変わっていたのではりなおします


1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vsprintf が関数 "int __cdecl DxLib::_VSPRINTF(char *,char const *,char *)" (?_VSPRINTF@DxLib@@YAHPADPBD0@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vswprintf が関数 "int __cdecl DxLib::_VSWPRINTF(unsigned short *,unsigned short const *,char *)" (?_VSWPRINTF@DxLib@@YAHPAGPBGPAD@Z) で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "_vswprintf" は未解決です。
1>libpng_d.lib(pngrutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jerror.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngread.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngrtran.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(png.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwrite.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jmemmgr.obj) : error LNK2019: 未解決の外部シンボル _sscanf が関数 _jinit_memory_mgr で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "__vswprintf" は未解決です。
1>E:\project\THLIK\Debug\THLIK.exe : fatal error LNK1120: 5 件の未解決の外部参照
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 22:17
by MoNoQLoREATOR
キャラクタセットに問題があるのかもしれません。

日本語版VisualStudioをお使いの場合:
プロジェクトのプロパティを開き、
左側の 構成プロパティ -> 全般 を選択し、右側の 文字セット という項目を見てください。 Unicode 文字セットを使用する か マルチバイト文字セットを使用する のどちらかを設定できるはずですが、それを逆にしてビルドしてみてください。

英語版VisualStudioをお使いの場合:
プロジェクトのプロパティを開き、
左側の Configuration Properties -> General を選択し、右側の Character Set という項目を見てください。 Use Unicode Character Set か Use Multi-Byte Character Set のどちらかを設定できるはずですが、それを逆にしてビルドしてみてください。

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 22:31
by MoNoQLoREATOR
もしくはライブラリディレクトリの設定がふとした拍子に変更されている可能性があります。

日本語版VisualStudioをお使いの場合:
プロジェクトのプロパティを開き、 左側の 構成プロパティ -> VC++ ディレクトリ を選択し、右側の ライブラリ ディレクトリ をダブルクリックすると右の方に下向きの矢印が出るはずなのでそれを押して<編集...>を押してください。左下に 親またはプロジェクトの規定値から継承(I) という項目があるのでそのボックスにチェックが入っていなければ入れてください。それが原因です。

英語版VisualStudioをお使いの場合:
プロジェクトのプロパティを開き、 左側の Configuration Properties -> VC++ Directories を選択し、右側の Library Directories をダブルクリックすると右の方に下向きの矢印が出るはずなのでそれを押して<Edit...>を押してください。左下に Inherit from parent or project defaults という項目があるのでそのボックスにチェックが入っていなければ入れてください。それが原因です。

Re: 未解決の外部シンボル

Posted: 2016年8月02日(火) 22:38
by つくばさん
MoNoQLoREATOR さん 返信ありがとうございます。
文字コードを変えてみたり、ライブラリディレクトリの設定を確認してみましたが結果は変わりませんでした。どうすればいいのでしょうか。

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 11:18
by softya(ソフト屋)
こちらにある手順を、ちゃんと全部やって頂けると解決できるかと思います。
http://dxlib.o.oo7.jp/dxuse.html

DXLIBご本家のサイトですので、あちこち見て頂くと勉強になります。
http://dxlib.o.oo7.jp/
特にリファレンスなどは必需品です。

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 17:44
by つくばさん
softya(ソフト屋)返信ありがとうございます
http://dxlib.o.oo7.jp/dxuse.htmlを参考に
新しいwin32プロジェクトを作ってみていましたが
やはり次のようなエラーが出ます。
1>------ ビルド開始: プロジェクト:Win32Project1, 構成:Debug Win32 ------
1> main.cpp
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vsprintf が関数 "int __cdecl DxLib::_VSPRINTF(char *,char const *,char *)" (?_VSPRINTF@DxLib@@YAHPADPBD0@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vswprintf が関数 "int __cdecl DxLib::_VSWPRINTF(unsigned short *,unsigned short const *,char *)" (?_VSWPRINTF@DxLib@@YAHPAGPBGPAD@Z) で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "_vswprintf" は未解決です。
1>libpng_d.lib(pngrutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jerror.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngread.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngrtran.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(png.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwrite.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jmemmgr.obj) : error LNK2019: 未解決の外部シンボル _sscanf が関数 _jinit_memory_mgr で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "__vswprintf" は未解決です。
1>(省略)\Win32Project1.exe : fatal error LNK1120: 5 件の未解決の外部参照
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 17:56
by つくばさん
softya(ソフト屋)返信ありがとうございます
http://dxlib.o.oo7.jp/dxuse.htmlを参考に
新しいwin32プロジェクトを作ってみていましたが
やはり次のようなエラーが出ます。
1>------ ビルド開始: プロジェクト:Win32Project1, 構成:Debug Win32 ------
1> main.cpp
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vsprintf が関数 "int __cdecl DxLib::_VSPRINTF(char *,char const *,char *)" (?_VSPRINTF@DxLib@@YAHPADPBD0@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2019: 未解決の外部シンボル _vswprintf が関数 "int __cdecl DxLib::_VSWPRINTF(unsigned short *,unsigned short const *,char *)" (?_VSWPRINTF@DxLib@@YAHPAGPBGPAD@Z) で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "_vswprintf" は未解決です。
1>libpng_d.lib(pngrutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwutil.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jerror.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngread.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngrtran.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(png.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libpng_d.lib(pngwrite.obj) : error LNK2001: 外部シンボル "_sprintf" は未解決です。
1>libjpeg_d.lib(jmemmgr.obj) : error LNK2019: 未解決の外部シンボル _sscanf が関数 _jinit_memory_mgr で参照されました。
1>LIBCMTD.lib(vswprintf.obj) : error LNK2001: 外部シンボル "__vswprintf" は未解決です。
1>(省略)\Win32Project1.exe : fatal error LNK1120: 5 件の未解決の外部参照
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 17:57
by つくばさん
どうすればいいのでしょうか

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 20:54
by softya(ソフト屋)
すべてをちゃんと設定されているなら、その問題は起きないはずなんです。
3.14bで治ったはずですので。もし起きるなら設定に間違いが有るか、ちゃんと3.16bを参照していないかです。

本当に間違っていないか、下記の手順を何度も確認しながら行ってみてください。
http://dxlib.o.oo7.jp/use/dxuse_vscom2015.html
「6.プロジェクトのビルド、実行」まで、少しもアレンジを加えずに行う必要があります。
手順を抜かしたり、ここの特殊なプロジェクトを使ってはいけません。

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 21:48
by つくばさん
softya(ソフト屋)さん返信ありがとうございます。
確認したところ
自分のパソコンにdxlibの展開exeがいくつもあり間違って最新版ではないものを最新版だと思って展開していたようです。
勘違いをしていた上にそれに気づくことができずすみませんでした。
これにて解決とさせていただきます。

解決方法
dxlibを最新版にする。
しっかりと確認する。

Re: 未解決の外部シンボル

Posted: 2016年8月03日(水) 21:49
by つくばさん
皆さんご協力ありがとうございました。