新・AA動画の作り方について
-
kokosan60
新・AA動画の作り方について
上のプログラムは正常に実行できましたが、
下のプログラムはエラーがでて実行できませんでした。
こちらで何か設定を変えなければならないことがあるのでしょうか。
環境
コンパイラ:Visual Studio 2005
OS:Windows XP SP2
エラーメッセージ
1>リンクしています...
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl draw_setumei(int,int,int,int)" (?draw_setumei@@YAXHHHH@Z) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl draw_fps(int,int,int,int)" (?draw_fps@@YAXHHHH@Z) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl fps_wait(void)" (?fps_wait@@YAXXZ) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl check_key(char * const)" (?check_key@@YAXQAD@Z) が関数 _WinMain@16 で参照されました。
1>C:\Documents and Settings\PC User\デスクトップ\dispAA\Debug\dispAA.exe : fatal error LNK1120: 外部参照 4 が未解決です。
下のプログラムはエラーがでて実行できませんでした。
こちらで何か設定を変えなければならないことがあるのでしょうか。
環境
コンパイラ:Visual Studio 2005
OS:Windows XP SP2
エラーメッセージ
1>リンクしています...
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl draw_setumei(int,int,int,int)" (?draw_setumei@@YAXHHHH@Z) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl draw_fps(int,int,int,int)" (?draw_fps@@YAXHHHH@Z) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl fps_wait(void)" (?fps_wait@@YAXXZ) が関数 _WinMain@16 で参照されました。
1>dispAA.obj : error LNK2019: 未解決の外部シンボル "void __cdecl check_key(char * const)" (?check_key@@YAXQAD@Z) が関数 _WinMain@16 で参照されました。
1>C:\Documents and Settings\PC User\デスクトップ\dispAA\Debug\dispAA.exe : fatal error LNK1120: 外部参照 4 が未解決です。
-
Dixq (管理人)
Re:新・AA動画の作り方について
あら・・、今見てみたところ、
extern void fps_wait();
extern void draw_fps(int,int,int,int);
extern void check_key(char Key[/url]);
extern void draw_setumei(int font, int color, int size, int contrast);
この4つの関数の正体がありませんね。
きっと他のファイルの内容でしょうけど、記載し忘れてしまったのかもしれません。
fps_waitとdraw_fpsは基本的に龍神録プログラミングの館の43章と同じです。
draw_fpsの引数が4つなのは座標データのほかにfont,colorのデータを持たせているためです。
check_keyはhttp://dixq.net/g/#40この関数を呼んでいるだけだったと思います。
draw_setumeiは、動画の下にサイズやコントラストの表示がしてあったと思いますが、
その表示を行っている関数です。
引数をDrawFormatStringなどで下に表示してやる関数です。
この4つの関数を追加してやれば動くと思います。
パソコンを再インストールしたので、前のプログラムデータが無いのです。ごめんなさい・・。
extern void fps_wait();
extern void draw_fps(int,int,int,int);
extern void check_key(char Key[/url]);
extern void draw_setumei(int font, int color, int size, int contrast);
この4つの関数の正体がありませんね。
きっと他のファイルの内容でしょうけど、記載し忘れてしまったのかもしれません。
fps_waitとdraw_fpsは基本的に龍神録プログラミングの館の43章と同じです。
draw_fpsの引数が4つなのは座標データのほかにfont,colorのデータを持たせているためです。
check_keyはhttp://dixq.net/g/#40この関数を呼んでいるだけだったと思います。
draw_setumeiは、動画の下にサイズやコントラストの表示がしてあったと思いますが、
その表示を行っている関数です。
引数をDrawFormatStringなどで下に表示してやる関数です。
この4つの関数を追加してやれば動くと思います。
パソコンを再インストールしたので、前のプログラムデータが無いのです。ごめんなさい・・。
-
kokosan60
Re:新・AA動画の作り方について
修正をしたのですが、今度は別のエラーが出てしまいました。
また、一部の関数はどのように書いて(変更して)いいのかわからずコメントアウトしています。
エラー
1>c:\documents and settings\pc user\デスクトップ\dispaa\dispaa.cpp(37) : error C2040: 'color' : 'int' は 'int [20]' と間接操作のレベルが異なります。
1>c:\documents and settings\pc user\デスクトップ\dispaa\dispaa.cpp(192) : error C2440: '=' : 'DWORD' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
ソースコード
また、一部の関数はどのように書いて(変更して)いいのかわからずコメントアウトしています。
エラー
1>c:\documents and settings\pc user\デスクトップ\dispaa\dispaa.cpp(37) : error C2040: 'color' : 'int' は 'int [20]' と間接操作のレベルが異なります。
1>c:\documents and settings\pc user\デスクトップ\dispaa\dispaa.cpp(192) : error C2440: '=' : 'DWORD' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
ソースコード
#include "DxLib.h"
#include "GV.h"
/* convAAで設定したMAXと同じ数値をいれる。 */
#define MAX 8825
/* ビットマップの横サイズ */
#define BMP_YOKO 640
/* ビットマップの縦サイズ */
#define BMP_TATE 480
/* AAデータを入れるための構造体 */
typedef struct{
unsigned char cont;
int col;
}AAimg_t;
/* 直前のAAデータを記憶するための構造体 */
typedef struct{
unsigned char num,cont;
}rem_img_t;
/* 縦サイズ */
#define TATE 5
/* 横サイズ */
#define YOKO 3
#define FLAME 60
//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数
int fps_count,count0t;
//平均を計算するため60回の1周時間を記録
int f[FLAME];
//平均fps
double ave;
int font,font2,color,size,cnt,contrast;
char Key[256];
char input[15][27]={
{"HMNRW"},
{"DKUhkHMNRW"},
{"$BEGOPQX\\b08"},
{"#@ACFJVYZ[/url]234569dfntwヲオセヒ"},
{"%&LSTa17jpuアカサホル"},
{"I/egiloqsxz{|}ォウキクケチナムモヤリレ"},
{"?crvyャイシトハミヨロ"},
{"!<>()ァョッエコスタテヌネノメユラ"},
{"ィゥソツフマワン"},
{"=*ェニ"},
{"+ュヘ"},
{":;"},
{"\"^_-~"},
{"'."},
{",`"},
};
//char input_n[15]={2,2,5,2,3,4,8,19,13,26,16,26,12,10,5};
char input_n[15]={5,10,12,26,16,26,13,19,8,4,3,2,5,2,2};
AAimg_t AAimg[BMP_TATE/TATE+1][BMP_YOKO/YOKO+1];
void fps_wait();
//void draw_fps(int,int,int,int);
void check_key(char Key[/url]);
//void draw_setumei(int font, int color, int size, int contrast);
int check_key(int KeyStateBuf[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) KeyStateBuf++;
else KeyStateBuf=0;
}
return 0;
}
void fps_wait(){
int term,i,gnt;
static int t=0;
if(fps_count==0){//60フレームの1回目なら
if(t==0)//完全に最初ならまたない
term=0;
else//前回記録した時間を元に計算
term=count0t+1000-GetNowCount();
}
else //待つべき時間=現在あるべき時刻-現在の時刻
term = (int)(count0t+fps_count*(1000.0/FLAME))-GetNowCount();
if(term>0)//待つべき時間だけ待つ
Sleep(term);
gnt=GetNowCount();
if(fps_count==0)//60フレームに1度基準を作る
count0t=gnt;
f[fps_count]=gnt-t;//1周した時間を記録
t=gnt;
//平均計算
if(fps_count==FLAME-1){
ave=0;
for(i=0;i<FLAME;i++)
ave+=f;
ave/=FLAME;
}
fps_count = (++fps_count)%FLAME ;
}-
kokosan60
Re:新・AA動画の作り方について
プログラム続き
/*void draw_fps(int x, int y){
if(ave!=0){
DrawFormatString(x, y,color[0],"[%.1f]",1000/ave);
}
return;
}*/
/* AAデータの表示0 */
void draw_AA0(){
int cont,num;
int xtm=3+(size-5)*2/5,ytm=5+(size-5)*2/5;
DrawBox(0,0,640,480,color,TRUE);
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=0;j<BMP_YOKO/YOKO+1;j++){
cont=AAimg[j].cont+contrast;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatString(xtm*j-(size-5)*30,ytm*i-(ytm-5)*30,AAimg[j].col,"%c",input[cont][num]);
}
}
}
/* AAデータの表示 */
/* フォントデータを使って右画面だけアップに出来る */
void draw_AA(){
int cont,num;
int xtm=3+(size-5)*2/5,ytm=5+(size-5)*2/5;
DrawBox(0,0,640,480,color,TRUE);
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=0;j<(BMP_YOKO/YOKO+1)/2;j++){
cont=AAimg[j].cont;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatStringToHandle( 3*j , 5*i , AAimg[j].col ,font2 ,"%c",input[cont][num] ) ;
}
}
int st=(BMP_YOKO/YOKO+1)/2-1, end=BMP_YOKO/YOKO+1;
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=st;j<end;j++){
cont=AAimg[j].cont+contrast;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatString(3*j+(size-5)*(j-st)*2/5,ytm*i-(ytm-5)*30,AAimg[j].col,"%c",input[cont][num]);
}
}
}
/* convAAでコンバートしたAAデータを読み込む */
int read_draw(FILE *fp){
if(cnt>=MAX){
fseek(fp, 0L, SEEK_SET);
cnt = 0;
}
fread( AAimg, sizeof(AAimg_t), (BMP_TATE/TATE+1)*(BMP_YOKO/YOKO+1), fp );
draw_AA();
cnt++;
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
FILE *fp;
SetGraphMode( 640, 480 , 16 ) ;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
/* 裏画面描画 */
SetDrawScreen( DX_SCREEN_BACK );
SetFontSize(5);
/* 描画領域を画面内に */
SetDrawArea( 0,0,640,480 ) ;
fp = fopen( "../convAA/AAdat.dat" , "rb" );
if( fp == NULL ){
printfDx( "見つかりません。" );
return -1;
}
size = 5;
font = CreateFontToHandle( "HGPゴシックE" , 18 , 2 , DX_FONTTYPE_ANTIALIASING_EDGE);
font2 = CreateFontToHandle( NULL , 5 , -1 , DX_FONTTYPE_NORMAL);
color = GetColor(255,255,255);
contrast=0;
int count=0;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key )){
check_key(Key);
{
if(Key[KEY_INPUT_S]>0){
if(Key[KEY_INPUT_LEFT]==2){
size--;
if(size<5)size=5;
if(size>=24)size-=4;
SetFontSize(size);
}
if(Key[KEY_INPUT_RIGHT]==2){
if(size>=20)size+=4;
SetFontSize(size);
size++;
}
}
}
read_draw(fp);//読み込んで描画
fps_wait();//FPS制御
//draw_fps(0,0,font,color);//FPS表示
//draw_setumei(font, color, size, contrast);//説明表示
if(Key[KEY_INPUT_ESCAPE]==1)break;
ScreenFlip();
count++;
}
DxLib_End();
fclose(fp);
return 0;
}-
Dixq (管理人)
Re:新・AA動画の作り方について
エラーメッセージの通り、colorの宣言に対して使い方が違うせいです。
draw_fps内などではcolorは配列であるように使っていますが、宣言は普通のint型変数です。
どちらかに全体をあわせてあげて下さい。
draw_fps内などではcolorは配列であるように使っていますが、宣言は普通のint型変数です。
どちらかに全体をあわせてあげて下さい。
-
kokosan60
Re:新・AA動画の作り方について
修正をしたのですが、また別のエラーが出てしまいました。
エラー
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_packet_iskeyframe が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_header が関数 "int __cdecl TheoraDecode_ReadHeader(struct tagDECODE_THEORA *)" (?TheoraDecode_ReadHeader@@YAHPAUtagDECODE_THEORA@@@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_YUVout が関数 "unsigned long __stdcall TheoraDecode_Thread(void *)" (?TheoraDecode_Thread@@YGKPAX@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_packetin が関数 "int __cdecl _TheoraDecode_IncToFrame(int,int)" (?_TheoraDecode_IncToFrame@@YAHHH@Z) で参照されました。
1>C:\Documents and Settings\PcUser\デスクトップ\新しいフォルダ\Debug\dispAA.exe : fatal error LNK1120: 外部参照 10 が未解決です。
ソースコード
エラー
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_packet_iskeyframe が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_header が関数 "int __cdecl TheoraDecode_ReadHeader(struct tagDECODE_THEORA *)" (?TheoraDecode_ReadHeader@@YAHPAUtagDECODE_THEORA@@@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_YUVout が関数 "unsigned long __stdcall TheoraDecode_Thread(void *)" (?TheoraDecode_Thread@@YGKPAX@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_packetin が関数 "int __cdecl _TheoraDecode_IncToFrame(int,int)" (?_TheoraDecode_IncToFrame@@YAHHH@Z) で参照されました。
1>C:\Documents and Settings\PcUser\デスクトップ\新しいフォルダ\Debug\dispAA.exe : fatal error LNK1120: 外部参照 10 が未解決です。
ソースコード
#include "DxLib.h"
#include "GV.h"
/* convAAで設定したMAXと同じ数値をいれる。 */
#define MAX 8825
/* ビットマップの横サイズ */
#define BMP_YOKO 640
/* ビットマップの縦サイズ */
#define BMP_TATE 480
/* AAデータを入れるための構造体 */
typedef struct{
unsigned char cont;
int col;
}AAimg_t;
/* 直前のAAデータを記憶するための構造体 */
typedef struct{
unsigned char num,cont;
}rem_img_t;
/* 縦サイズ */
#define TATE 5
/* 横サイズ */
#define YOKO 3
#define FLAME 60
//fpsのカウンタ、60フレームに1回基準となる時刻を記録する変数
int fps_count,count0t;
//平均を計算するため60回の1周時間を記録
int f[FLAME];
//平均fps
double ave;
int font,font2,color[20],size,cnt,contrast;
char Key[256];
char input[15][27]={
{"HMNRW"},
{"DKUhkHMNRW"},
{"$BEGOPQX\\b08"},
{"#@ACFJVYZ[/url]234569dfntwヲオセヒ"},
{"%&LSTa17jpuアカサホル"},
{"I/egiloqsxz{|}ォウキクケチナムモヤリレ"},
{"?crvyャイシトハミヨロ"},
{"!<>()ァョッエコスタテヌネノメユラ"},
{"ィゥソツフマワン"},
{"=*ェニ"},
{"+ュヘ"},
{":;"},
{"\"^_-~"},
{"'."},
{",`"},
};
//char input_n[15]={2,2,5,2,3,4,8,19,13,26,16,26,12,10,5};
char input_n[15]={5,10,12,26,16,26,13,19,8,4,3,2,5,2,2};
AAimg_t AAimg[BMP_TATE/TATE+1][BMP_YOKO/YOKO+1];
void fps_wait();
//void draw_fps(int,int,int,int);
void check_key(char Key[/url]);
//void draw_setumei(int font, int color, int size, int contrast);
void check_key(char KeyStateBuf[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) KeyStateBuf++;
else KeyStateBuf=0;
}
}
void fps_wait(){
int term,i,gnt;
static int t=0;
if(fps_count==0){//60フレームの1回目なら
if(t==0)//完全に最初ならまたない
term=0;
else//前回記録した時間を元に計算
term=count0t+1000-GetNowCount();
}
else //待つべき時間=現在あるべき時刻-現在の時刻
term = (int)(count0t+fps_count*(1000.0/FLAME))-GetNowCount();
if(term>0)//待つべき時間だけ待つ
Sleep(term);
gnt=GetNowCount();
if(fps_count==0)//60フレームに1度基準を作る
count0t=gnt;
f[fps_count]=gnt-t;//1周した時間を記録
t=gnt;
//平均計算
if(fps_count==FLAME-1){
ave=0;
for(i=0;i<FLAME;i++)
ave+=f;
ave/=FLAME;
}
fps_count = (++fps_count)%FLAME ;
}
/*void draw_fps(int x, int y){
if(ave!=0){
DrawFormatString(x, y,color[0],"[%.1f]",1000/ave);
}
return;
}*/-
kokosan60
Re:新・AA動画の作り方について
プログラム続き
/* AAデータの表示0 */
void draw_AA0(){
int cont,num;
int xtm=3+(size-5)*2/5,ytm=5+(size-5)*2/5;
DrawBox(0,0,640,480,*color,TRUE);
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=0;j<BMP_YOKO/YOKO+1;j++){
cont=AAimg[j].cont+contrast;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatString(xtm*j-(size-5)*30,ytm*i-(ytm-5)*30,AAimg[j].col,"%c",input[cont][num]);
}
}
}
/* AAデータの表示 */
/* フォントデータを使って右画面だけアップに出来る */
void draw_AA(){
int cont,num;
int xtm=3+(size-5)*2/5,ytm=5+(size-5)*2/5;
DrawBox(0,0,640,480,*color,TRUE);
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=0;j<(BMP_YOKO/YOKO+1)/2;j++){
cont=AAimg[j].cont;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatStringToHandle( 3*j , 5*i , AAimg[j].col ,font2 ,"%c",input[cont][num] ) ;
}
}
int st=(BMP_YOKO/YOKO+1)/2-1, end=BMP_YOKO/YOKO+1;
for(int i=0;i<BMP_TATE/TATE+1;i++){
for(int j=st;j<end;j++){
cont=AAimg[j].cont+contrast;
if(cont>=15)
cont=14;
if(cont<0)
cont=0;
num =GetRand(input_n[cont]-1);
DrawFormatString(3*j+(size-5)*(j-st)*2/5,ytm*i-(ytm-5)*30,AAimg[j].col,"%c",input[cont][num]);
}
}
}
/* convAAでコンバートしたAAデータを読み込む */
int read_draw(FILE *fp){
if(cnt>=MAX){
fseek(fp, 0L, SEEK_SET);
cnt = 0;
}
fread( AAimg, sizeof(AAimg_t), (BMP_TATE/TATE+1)*(BMP_YOKO/YOKO+1), fp );
draw_AA();
cnt++;
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
FILE *fp;
SetGraphMode( 640, 480 , 16 ) ;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
/* 裏画面描画 */
SetDrawScreen( DX_SCREEN_BACK );
SetFontSize(5);
/* 描画領域を画面内に */
SetDrawArea( 0,0,640,480 ) ;
fp = fopen( "../convAA/AAdat.dat" , "rb" );
if( fp == NULL ){
printfDx( "見つかりません。" );
return -1;
}
size = 5;
font = CreateFontToHandle( "HGPゴシックE" , 18 , 2 , DX_FONTTYPE_ANTIALIASING_EDGE);
font2 = CreateFontToHandle( NULL , 5 , -1 , DX_FONTTYPE_NORMAL);
*color = GetColor(255,255,255);
contrast=0;
int count=0;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key )){
check_key(Key);
{
if(Key[KEY_INPUT_S]>0){
if(Key[KEY_INPUT_LEFT]==2){
size--;
if(size<5)size=5;
if(size>=24)size-=4;
SetFontSize(size);
}
if(Key[KEY_INPUT_RIGHT]==2){
if(size>=20)size+=4;
SetFontSize(size);
size++;
}
}
}
read_draw(fp);//読み込んで描画
fps_wait();//FPS制御
//draw_fps(0,0,font,color);//FPS表示
//draw_setumei(font, color, size, contrast);//説明表示
if(Key[KEY_INPUT_ESCAPE]==1)break;
ScreenFlip();
count++;
}
DxLib_End();
fclose(fp);
return 0;
}-
kokosan60
Re:新・AA動画の作り方について
GV.hは龍神録プログラミングの館の43章のfps.cppでincludeしてありましたので
そのヘッダーと関連するヘッダーを追加してincludeしました。
不要ということなので、GV.hをincludeせずに行ったのですが、同じエラーメッセージが出てしまいました。
そのヘッダーと関連するヘッダーを追加してincludeしました。
不要ということなので、GV.hをincludeせずに行ったのですが、同じエラーメッセージが出てしまいました。
-
御津凪
Re:新・AA動画の作り方について
ライブラリファイルをリンクされていないためのエラーなので、
多分必要なライブラリをリンカに渡していないのが原因だと思います。
(Theora***となっているあたり、ogg系のライブラリだと思います)
多分必要なライブラリをリンカに渡していないのが原因だと思います。
(Theora***となっているあたり、ogg系のライブラリだと思います)
-
Mist
Re:新・AA動画の作り方について
提示のプログラムをこちらでコンパイルしてみましたが、コンパイルエラーがあってリンクまで行かないですね。
1>------ すべてのリビルド開始: プロジェクト: TestProgram, 構成: Debug Win32 ------
1>プロジェクト 'TestProgram'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>TestProgram.cpp
1>c:\work\temp\testprogram\testprogram.cpp(44) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>c:\work\temp\testprogram\testprogram.cpp(44) : error C2078: 初期化子の数が多すぎます。
1>c:\work\temp\testprogram\testprogram.cpp(46) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>c:\work\temp\testprogram\testprogram.cpp(48) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>ビルドログは "file://c:\Work\temp\TestProgram\Debug\BuildLog.htm" に保存されました。
1>TestProgram - エラー 4、警告 0
1>------ すべてのリビルド開始: プロジェクト: TestProgram, 構成: Debug Win32 ------
1>プロジェクト 'TestProgram'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>TestProgram.cpp
1>c:\work\temp\testprogram\testprogram.cpp(44) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>c:\work\temp\testprogram\testprogram.cpp(44) : error C2078: 初期化子の数が多すぎます。
1>c:\work\temp\testprogram\testprogram.cpp(46) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>c:\work\temp\testprogram\testprogram.cpp(48) : error C2117: 'input' : 指定された配列には、初期化子が多すぎます。
1> c:\work\temp\testprogram\testprogram.cpp(40) : 'input' の宣言を確認してください。
1>ビルドログは "file://c:\Work\temp\TestProgram\Debug\BuildLog.htm" に保存されました。
1>TestProgram - エラー 4、警告 0
-
Mist
Re:新・AA動画の作り方について
で、input[15][50]と変えてコンパイルしたところ問題なくビルドできました。
DXライブラリのlibファイルへのパス設定が間違っていたりしませんか?
DXライブラリのlibファイルへのパス設定が間違っていたりしませんか?
-
kokosan60
Re:新・AA動画の作り方について
inputの部分を修正し、"DxLib.h"を<DxLib.h>に変更したら正常に動きました。
ただ、コメントアウトしている関数や書いていない関数があり、
新・AA動画の作り方の動画のように表示することができません。
ですので、その関数のプログラムを教えていただけないでしょうか。
また、修正したプログラムに間違いがありましたらそちらも教えてください。
ただ、コメントアウトしている関数や書いていない関数があり、
新・AA動画の作り方の動画のように表示することができません。
ですので、その関数のプログラムを教えていただけないでしょうか。
また、修正したプログラムに間違いがありましたらそちらも教えてください。