未解決の外部シンボル

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
つくばさん
記事: 22
登録日時: 4年前

未解決の外部シンボル

#1

投稿記事 by つくばさん » 3年前

いま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
です。 
よろしくお願いします。
初心者ですがよろしくお願いします。

アバター
プラム
記事: 164
登録日時: 6年前
住所: 東海地方

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

#2

投稿記事 by プラム » 3年前

コードを見ていないので何とも言えませんが、
DxLibの関数のコードが見当たらないって言ってるようですね。
たぶんDxLibがちゃんと読み込めてないからだと思います。

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

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

つくばさん
記事: 22
登録日時: 4年前

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

#3

投稿記事 by つくばさん » 3年前

ノウル さん返信ありがとうございます。
dxlibを入れ直しプロパティの設定を見直してみましたが、
同じようなエラーが発生してしまいます。どういうことでしょうか?

つくばさん
記事: 22
登録日時: 4年前

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

#4

投稿記事 by つくばさん » 3年前

よく見たところ少しエラーログが変わっていたのではりなおします


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 スキップ ==========

アバター
MoNoQLoREATOR
記事: 284
登録日時: 9年前
住所: 東京

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

#5

投稿記事 by MoNoQLoREATOR » 3年前

キャラクタセットに問題があるのかもしれません。

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

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

アバター
MoNoQLoREATOR
記事: 284
登録日時: 9年前
住所: 東京

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

#6

投稿記事 by MoNoQLoREATOR » 3年前

もしくはライブラリディレクトリの設定がふとした拍子に変更されている可能性があります。

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

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

つくばさん
記事: 22
登録日時: 4年前

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

#7

投稿記事 by つくばさん » 3年前

MoNoQLoREATOR さん 返信ありがとうございます。
文字コードを変えてみたり、ライブラリディレクトリの設定を確認してみましたが結果は変わりませんでした。どうすればいいのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#8

投稿記事 by softya(ソフト屋) » 3年前

こちらにある手順を、ちゃんと全部やって頂けると解決できるかと思います。
http://dxlib.o.oo7.jp/dxuse.html

DXLIBご本家のサイトですので、あちこち見て頂くと勉強になります。
http://dxlib.o.oo7.jp/
特にリファレンスなどは必需品です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

つくばさん
記事: 22
登録日時: 4年前

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

#9

投稿記事 by つくばさん » 3年前

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 スキップ ==========

つくばさん
記事: 22
登録日時: 4年前

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

#10

投稿記事 by つくばさん » 3年前

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 スキップ ==========

つくばさん
記事: 22
登録日時: 4年前

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

#11

投稿記事 by つくばさん » 3年前

どうすればいいのでしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#12

投稿記事 by softya(ソフト屋) » 3年前

すべてをちゃんと設定されているなら、その問題は起きないはずなんです。
3.14bで治ったはずですので。もし起きるなら設定に間違いが有るか、ちゃんと3.16bを参照していないかです。

本当に間違っていないか、下記の手順を何度も確認しながら行ってみてください。
http://dxlib.o.oo7.jp/use/dxuse_vscom2015.html
「6.プロジェクトのビルド、実行」まで、少しもアレンジを加えずに行う必要があります。
手順を抜かしたり、ここの特殊なプロジェクトを使ってはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

つくばさん
記事: 22
登録日時: 4年前

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

#13

投稿記事 by つくばさん » 3年前

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

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

つくばさん
記事: 22
登録日時: 4年前

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

#14

投稿記事 by つくばさん » 3年前

皆さんご協力ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る