ページ 11

龍神録のエラー

Posted: 2013年7月22日(月) 16:00
by モリ
龍神録の4キャラ描画しようをプログラミングをしていたら以下のエラーがでました。
エラー 3 error LNK2019: 未解決の外部シンボル "int __cdecl CheckStateKey(unsigned char)" (?CheckStateKey@@YAHE@Z) が関数 _WinMain@16 で参照されました。 C:\Users\coron\Desktop\project\1章\main.obj RyuJin
エラー 2 error LNK2019: 未解決の外部シンボル "int __cdecl GetHitKeyStateAll_2(void)" (?GetHitKeyStateAll_2@@YAHXZ) が関数 "int __cdecl ProcessLoop(void)" (?ProcessLoop@@YAHXZ) で参照されました。 C:\Users\coron\Desktop\project\1章\main.obj RyuJin
警告 1 warning C4244: '引数' : 'double' から 'float' への変換です。データが失われる可能性があります。 c:\users\coron\desktop\project\1章\mydat\source\graph.cpp 7 1 RyuJin
サンプルコードと比べてみてもどこが間違っているかわかりませんでした。
よろしくお願いします。

Re: 龍神録のエラー

Posted: 2013年7月22日(月) 16:29
by Rittai_3D
自分で書いたコードを貼ってください。

エラーは関数の実体が無い時に出現するものなので、関数の実体があるか確認をしてください。

警告は無視でいいと思います。

Re: 龍神録のエラー

Posted: 2013年7月22日(月) 16:38
by モリ
struct.h

コード:

typedef struct{
	int flag;
	int cnt;
	int power;
	int point;
	int score;
	int num;
	int mutekicnt;
	int shot_mode;
	int money;
	int img;
	int slow;
	double x, y;
}ch_t;
graph.cpp

コード:

#include "../include/GV.h"

extern ch_t ch;
extern int img_ch[2][12];

void graph_ch(){
	DrawRotaGraphF(ch.x, ch.y, 1.0f, 0.0f, img_ch[0][ch.img], TRUE);
}

void graph_main(){
	graph_ch();
}
load.cpp

コード:

#include "../include/GV.h"

extern int img_ch[2][12];

void Load(){
	LoadDivGraph("../dat/img/char/0.png", 12, 4, 3, 73, 73, img_ch[0]);
}
main.cpp

コード:

#define GLOBAL_INSTANCE 
#include "../include/GV.h"

extern int GetHitKeyStateAll_2();

extern int CheckStateKey(unsigned char Handle);

extern void Load();

extern void graph_main();

int img_ch[2][12];
ch_t ch;

int ProcessLoop(){
	if(ProcessMessage() != 0)  return -1;
	if(ClearDrawScreen() != 0) return -1;
	GetHitKeyStateAll_2();
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lmCmdLine, int nCmdShow){
	ChangeWindowMode(TRUE);
	if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;

	Load();

	while(ProcessLoop() == 0){

		graph_main();
		
		if(CheckStateKey(KEY_INPUT_ESCAPE) == 1) break; 
		ScreenFlip();
	}

	DxLib_End();
	return 0;
}
よろしくお願いします。

Re: 龍神録のエラー

Posted: 2013年7月22日(月) 16:43
by non
extern int GetHitKeyStateAll_2();
extern int CheckStateKey(unsigned char Handle);

この2つのファイルは別のところにあるよと宣言しているのですが、LINKのときにどこにもないよと
エラーメッセージは言ってます。
元のプログラムの場合は、key.cppにあるわけですが、あなたのにはこのファイルがないのではないですか。

Re: 龍神録のエラー

Posted: 2013年7月22日(月) 16:45
by モリ
見落として作るを忘れてました。お手数をおかけしました。
ありがとうございます。

Re: 龍神録のエラー

Posted: 2013年7月22日(月) 16:48
by Rittai_3D
モリ さんが書きました: main.cpp

コード:

#define GLOBAL_INSTANCE 
#include "../include/GV.h"

extern int GetHitKeyStateAll_2();

extern int CheckStateKey(unsigned char Handle);

extern void Load();

extern void graph_main();

int img_ch[2][12];
ch_t ch;

int ProcessLoop(){
	if(ProcessMessage() != 0)  return -1;
	if(ClearDrawScreen() != 0) return -1;
	GetHitKeyStateAll_2();
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lmCmdLine, int nCmdShow){
	ChangeWindowMode(TRUE);
	if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;

	Load();

	while(ProcessLoop() == 0){

		graph_main();
		
		if(CheckStateKey(KEY_INPUT_ESCAPE) == 1) break; 
		ScreenFlip();
	}

	DxLib_End();
	return 0;
}
よろしくお願いします。
extern int GetHitKeyStateAll_2();
extern int CheckStateKey(unsigned char Handle);

の2つがどこにも書いてない(=実体がない)事が原因です。