DxLib前の環境で動いたものが動かない。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
baby2478nishi
記事: 52
登録日時: 5年前
住所: 兵庫県姫路市

DxLib前の環境で動いたものが動かない。

#1

投稿記事 by baby2478nishi » 5年前

こんばんは。お久しぶりです。

新しいパソコンでVSをいれDxLib関連の引き継ぎをしたのですがうまくいきませんでした。
サンプルプログラムは動きますが前の環境で動いたものが動きません。
作った幾つかのプログラムでしてみましたが無理でした。
予め設定はしてあるので追加のプロジェクトに追加すべきファイルを前のと同じ所にやったのですが・・。


エラー LNK2019 未解決の外部シンボル "int __cdecl DxLib::ClearDrawScreen(struct tagRECT *)" (?ClearDrawScreen@DxLib@@YAHPAUtagRECT@@@Z) が関数 _WinMain@16 で参照されました。 BUILD1 D:\forDxLib\BUILD1\Main.obj 1
エラー LNK2019 未解決の外部シンボル "int __cdecl DxLib::DrawString(int,int,char const *,int,int)" (?DrawString@DxLib@@YAHHHPBDHH@Z) が関数 "void __cdecl Config(void)" (?Config@@YAXXZ) で参照されました。 BUILD1 D:\forDxLib\BUILD1\Main.obj 1
エラー LNK2019 未解決の外部シンボル "unsigned long __cdecl DxLib::GetColor(int,int,int)" (?GetColor@DxLib@@YAKHHH@Z) が関数 "void __cdecl Config(void)" (?Config@@YAXXZ) で参照されました。 BUILD1 D:\forDxLib\BUILD1\Main.obj 1
エラー LNK2019 未解決の外部シンボル _TIFFClose が関数 "int __cdecl LoadTiffImage(struct DxLib::tagSTREAMDATA *,struct DxLib::tagBASEIMAGE *,int)" (?LoadTiffImage@@YAHPAUtagSTREAMDATA@DxLib@@PAUtagBASEIMAGE@2@H@Z) で参照されました。 BUILD1 D:\forDxLib\BUILD1\DxUseCLib_d.lib(DxUseCLib.obj) 1
エラー LNK2019 未解決の外部シンボル _TIFFReadRGBAStrip が関数 "int __cdecl LoadTiffImage(struct DxLib::tagSTREAMDATA *,struct DxLib::tagBASEIMAGE *,int)" (?LoadTiffImage@@YAHPAUtagSTREAMDATA@DxLib@@PAUtagBASEIMAGE@2@H@Z) で参照されました。 BUILD1 D:\forDxLib\BUILD1\DxUseCLib_d.lib(DxUseCLib.obj) 1
エラー LNK2019 未解決の外部シンボル _TIFFGetField が関数 "int __cdecl LoadTiffImage(struct DxLib::tagSTREAMDATA *,struct DxLib::tagBASEIMAGE *,int)" (?LoadTiffImage@@YAHPAUtagSTREAMDATA@DxLib@@PAUtagBASEIMAGE@2@H@Z) で参照されました。 BUILD1 D:\forDxLib\BUILD1\DxUseCLib_d.lib(DxUseCLib.obj) 1
エラー LNK2019 未解決の外部シンボル _TIFFClientOpen が関数 "int __cdecl LoadTiffImage(struct DxLib::tagSTREAMDATA *,struct DxLib::tagBASEIMAGE *,int)" (?LoadTiffImage@@YAHPAUtagSTREAMDATA@DxLib@@PAUtagBASEIMAGE@2@H@Z) で参照されました。 BUILD1 D:\forDxLib\BUILD1\DxUseCLib_d.lib(DxUseCLib.obj) 1
エラー LNK2019 未解決の外部シンボル _printf が関数 "public: virtual bool __thiscall D_btCollisionDispatcher::needsCollision(class D_btCollisionObject *,class D_btCollisionObject *)" (?needsCollision@D_btCollisionDispatcher@@UAE_NPAVD_btCollisionObject@@0@Z) で参照されました。 BUILD1 D:\forDxLib\BUILD1\libbulletcollision_vc6_d.lib(btCollisionDispatcher.obj) 1
エラー LNK2001 外部シンボル "_printf" は未解決です。 BUILD1 D:\forDxLib\BUILD1\libbulletcollision_vc6_d.lib(btGjkPairDetector.obj) 1
エラー LNK2019 未解決の外部シンボル _sprintf が関数 _format_message で参照されました。 BUILD1 D:\forDxLib\BUILD1\libjpeg_d.lib(jerror.obj) 1
エラー LNK2019 未解決の外部シンボル _sscanf が関数 _jinit_memory_mgr で参照されました。 BUILD1 D:\forDxLib\BUILD1\libjpeg_d.lib(jmemmgr.obj) 1
エラー LNK1120 10 件の未解決の外部参照 BUILD1 D:\forDxLib\BUILD1\Debug\BUILD1.exe 1


プログラムは前に載せたことがありますが、

コード:

#include"DxLib.h"

typedef enum {
	eScene_Menu,    //メニュー画面
	eScene_Game,    //ゲーム画面
	eScene_Config,  //終了画面
	eScene_Title,   //タイトル画面
} eScene;

int Music1, Music2, BackGround1, Title1;//Music1:海戦,Music2:魔王の城,Count:音楽が流れている時間を継続,BackGround1:背景1

static int Scene = eScene_Title;    //現在の画面(シーン)
bool IsFirstTitle = true;
bool IsFirstGame = true;

void UpdateScene() {
	if (CheckHitKey(KEY_INPUT_G) != 0) {
		Scene = eScene_Game;
		IsFirstGame = true;
	}
	if (CheckHitKey(KEY_INPUT_C) != 0) {
		Scene = eScene_Config;
	}
	if (CheckHitKey(KEY_INPUT_M) != 0) {
		Scene = eScene_Menu;
	}
}

//メニュー画面
void Menu() {
	DrawString(0, 0, "プログラムを終了します。", GetColor(255, 255, 255));
}

//ゲーム画面
void Game() {
	DrawString(0, 0, "ゲーム画面です。", GetColor(255, 255, 255));
	if (IsFirstGame) {
		StopSoundMem(Music1);
		PlaySoundMem(Music2, DX_PLAYTYPE_BACK); // GAME時の曲を再生する(LOOP)
		IsFirstGame = false;
	}
}

//設定画面
void Config() {
	DrawString(0, 0, "設定画面です。", GetColor(255, 255, 255));
}

void Title() {//Default(初期)の画面・音声設定
	if (IsFirstTitle) {
		PlaySoundMem(Music1, DX_PLAYTYPE_BACK); // 背景時の曲を再生する(LOOP)
		IsFirstTitle = false;
	}
	DrawGraph(0, 0, Title1, TRUE); // データハンドルを使って画像を描画
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更と初期化と裏画面設定

	SetMainWindowText("Piron's Adventure");//タイトルを変更

	Music1 = LoadSoundMem("Sound/amacya-kaisen.ogg"); // サウンド/1up.wavをロードし、識別番号をMusic1に格納
	Music2 = LoadSoundMem("Sound/甘茶工房-魔王の城.ogg"); //サウンドをメモリにロード,Music2に格納
	Title1 = LoadGraph("画像/Title.png");//タイトル画像をロード

	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
		switch (Scene) {//現在のシーンにあった処理をする
		case eScene_Menu://現在のシーンがメニューなら
			Menu();//メニュー画面
			break;
		case eScene_Game://現在のシーンがゲームなら
			Game();//ゲーム画面
			break;
		case eScene_Config://現在のシーンが設定なら
			Config();//設定画面
			break;
		case eScene_Title://現在のシーンがタイトルなら
			Title();//タイトル画面
			break;
		}
		UpdateScene();//シーンを更新する
	}

	DxLib_End(); // DXライブラリ終了処理
	return 0;
}
です。
なにがいけないのでしょうか?

前の環境は:VS2013 Professional,今はVS2015Communityです。

can110
記事: 27
登録日時: 6年前

Re: DxLib前の環境で動いたものが動かない。

#2

投稿記事 by can110 » 5年前

開発環境の違い(VS2013→VS2015)のみであれば、以下と同様の原因かもしれません。
DXライブラリを使おうとしたら・・・
最新のDXライブラリに置き換えるとよいようです。

baby2478nishi
記事: 52
登録日時: 5年前
住所: 兵庫県姫路市

Re: DxLib前の環境で動いたものが動かない。

#3

投稿記事 by baby2478nishi » 5年前

すみません、書いていませんでしたね。
僕もそう思って最新版に変えてみましたが変わりませんでした。

テストプログラムは動くのに、前の環境で動いたのがなんで動かないんだろ・・。

can110
記事: 27
登録日時: 6年前

Re: DxLib前の環境で動いたものが動かない。

#4

投稿記事 by can110 » 5年前

こちらの環境(Win10, VS2015Community, DxLib3.16)にてプロジェクト新規作成して提示されたソースのビルドは成功しました。
ソースに問題はないと思います。

ちなみに、そちらの環境ではライブラリのパスはD:\forDxLib\BUILD1\のようですが
こちらではC:\DxLib_VC\プロジェクトに追加すべきファイル_VC用\としています。

以下を試してみる&確認してみてはいかがでしょうか?

・リビルドする。

・ライブラリは最新か確認する
→D:\forDxLib\BUILD1下にDxDrawFunc_vs2015_x64_d.libなどが存在するか?

・プロジェクトの設定を再確認する。
・追加のインクルード、ライブラリディレクトリは上記のパスを指しているか?
・Debug, Releaseで同じパスを指しているか?

baby2478nishi
記事: 52
登録日時: 5年前
住所: 兵庫県姫路市

Re: DxLib前の環境で動いたものが動かない。

#5

投稿記事 by baby2478nishi » 5年前

返信が遅くなり申し訳ございません、

リビルドしましたが変わらず、ライブラリは存在しました。
また、設定を確認しても間違っていませんね。
前の環境(VS2013 Professional)だと動いたのですが、当方の都合によりVS2015 Communityに変更することになりまして。それまではできていたのですが・・。

can110
記事: 27
登録日時: 6年前

Re: DxLib前の環境で動いたものが動かない。

#6

投稿記事 by can110 » 5年前

DxLibが最新であれば、ソースに問題はないので、プロジェクト設定に原因があると思われますが…

以下の類似のケースでは、プラットフォームツールセット を「v120」に変更することで解消できるようです。
VisualStudio2015Preview

VS2015でソリューションを作成しなおして、ソース、リソースなどを移行したほうが早いかもしれません。

baby2478nishi
記事: 52
登録日時: 5年前
住所: 兵庫県姫路市

Re: DxLib前の環境で動いたものが動かない。

#7

投稿記事 by baby2478nishi » 5年前

試してみたのですが、

v140
v140のxpバージョン
親またはプロジェクトの(ry

しかありませんでした。

baby2478nishi
記事: 52
登録日時: 5年前
住所: 兵庫県姫路市

Re: DxLib前の環境で動いたものが動かない。

#8

投稿記事 by baby2478nishi » 5年前

すみません。動きました。

一応と思い

VisualStudio 2015 - Windows XP (v140)でしてみたところ動きました。

ありがとうございました。

閉鎖

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