ページ 11

コンパイル時のエラー

Posted: 2010年9月16日(木) 21:55
by 釣り師
最近時間ができたので、再びプログラミング勉強を再開しました。

そして、コンパイルしようとすると、
1> : fatal error C1033: プログラム データベース '' を開けません。
というエラーが出てきて先へ進めません。
龍神録のデータを持ってきてコンパイルしてみたのですが、その場合もエラーが出て動きません。
解決策、原因、知っている方はいらっしゃいませんか?

環境は
Win7 32bit
VisualC++ 2008及び 2010
です。
どっちでやってもこのエラーが出てしまいます。

Re:コンパイル時のエラー

Posted: 2010年9月16日(木) 23:55
by box
> そして、コンパイルしようとすると、
> 1> : fatal error C1033: プログラム データベース '' を開けません。
> というエラーが出てきて先へ進めません。

どんなソースコードをコンパイルしようとしたときですか?

> 龍神録のデータを持ってきてコンパイルしてみたのですが、その場合もエラーが出て動きません。

上のと同じエラーですか?

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 07:06
by 釣り師
ええ。すべて同じエラーです。

ソースコードは
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( DxLib_Init() == -1 ) return -1;



WaitKey() ;
DxLib_End() ;
return 0 ;
}


一番最初に使う、ソースコードです。

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 08:13
by naohiro19
「C/C++のトラブル集」に載っていますね。
http://bit.ly/bQbJHG

-- 追記
URLを貼り付けると長くなるので短縮URLを利用しました

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 09:01
by toyo

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 15:46
by 釣り師
naohiro19さん
toyoさん。
URLありがとうございます。今後の参考にさせていただきます。

今、とりあえず何もせずにコンパイルしてみたら、なぜかとおりました。
原因は結局不明のままですが、解決とさせていただきます。
ありがとうございました。



追記、
何故か再びエラーが出るようになってしまいました 画像

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 17:49
by 釣り師
VC++の2008、2010のうち、2010の方をアンインストールしたのですが、やはりダメです。
互換モードの変更なども試しましたが、やはり‥。

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 17:54
by シエル
プロジェクトごと作り直してもだめなのですか?

Re:コンパイル時のエラー

Posted: 2010年9月17日(金) 18:02
by 釣り師
ええ。
それも試したのですが、やはりダメです。

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 20:25
by 釣り師
こんな感じになるんですよ。
ok.cppは適当に考えてつけた名前なんで、気にしないでください

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 21:37
by シエル
これって、普通のコンソールアプリケーションでもなるんですか?

あまり見ないエラーなので、ネットにもあまり情報がないようです。

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 21:46
by 釣り師
プロジェクト自体が、Win32コンソールアプリケーションですので。
動かないようですね。

ネット上の情報もひと通り試したのですが、効果なしでした。

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 21:55
by Justy
 Visual Studioの互換モードは変えてみましたか?

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:06
by 釣り師
ええ。上記のとおり、互換モードもいじくってみました。
しかし、ダメなようです

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:14
by シエル
DXライブラリ使ってるのに、コンソールアプリケーションで作ってるんですか?
win32プロジェクトで作るとどうなりますか?

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:39
by 釣り師
特に気にせず使用してきました。
変ですかね?

いまやってみましたが、やはり無理でした。
同じエラーが出てしまいます。

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:47
by fatens
>特に気にせず使用してきました。
>変ですかね?

DXライブラリを使用するにはWin32プロジェクトにしないとダメです。


なかなか解決しないようですが、VC++ 2008の再インストールは試されましたか?

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:50
by 釣り師
>なかなか解決しないようですが、VC++ 2008の再インストールは試されましたか?

ええ、やってみました。
VC++2010でも同様のエラーで、同様に再インストールしました。いまは、2010の方はアンインストールしましたが、依然として2008はエラーが起こる状態です。

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 22:53
by シエル
何か他の常駐ソフトが影響してるんですかねぇ。

ためしにウイルスソフトを止めてみて治ったりしないですかね?

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 23:02
by 釣り師
なんだかよくわかりませんが、例のエラーは消えました。
そのかわり…

1>------ ビルド開始: プロジェクト: ko, 構成: Debug Win32 ------
1>コンパイルしています...
1>ko.cpp
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>リンクしています...
1>LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
1>C:\Users\\Documents\Visual Studio 2008\Projects\ko\Debug\ko.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>ビルドログは "file://c:\Users\\Documents\Visual Studio 2008\Projects\ko\Debug\BuildLog.htm" に保存されました。
1>ko - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


こんなエラーになってしまいました…

Re:コンパイル時のエラー

Posted: 2010年9月18日(土) 23:09
by シエル
今はwin32プロジェクトで作ってるんですか?

あと、今の状態になった経緯がわからないんですが、

ウイルスソフトを止めたら、そのエラーになったんですか?
それとも何もせずに、コンパイルしたらそのエラーが出たんですか?

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 07:08
by 釣り師
とりあえず、 苦しんで覚えるC言語 というサイトで公開されているコンパイラが干渉みたいなことをしているのではと思いアンインストールしました。
そしたらこのエラーです。

ウイルスソフトの方は止めていません

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 08:44
by シエル
とりあえずwin32プロジェクトで作ってみて下さい。

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 13:19
by 釣り師
win32プロジェクトのコンソールアプリケーションで作成してみました。

int main();
とだけ書いて実行したときには
1>------ ビルド開始: プロジェクト: okok, 構成: Debug Win32 ------
1>リンクしています...
1>LIBCMTD.lib(crt0.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
1>C:\Users\\Documents\Visual Studio 2008\Projects\okok\Debug\okok.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>ビルドログは "file://c:\Users\\Documents\Visual Studio 2008\Projects\okok\Debug\BuildLog.htm" に保存されました。
1>okok - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
というエラーが、


#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了


LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ;


WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
と書いた場合は、なにやら長いエラーが。(添付画像に描かれているので、ご参照ください。)
ぐぐってみましたが、いまいちよくわかりませんでした。


追記

すみません。LoadGraphScreenをいれていたのが、長いエラーの原因だったようです。気にしないでください。
LoadGraphScreenを消した場合は、 今までどおりのC1033のエラーです。 画像

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 13:36
by fatens
>win32プロジェクトのコンソールアプリケーションで作成してみました。

再度書きますが、
DXライブラリを使用するにはWin32 プロジェクトにしないとダメです。

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 13:48
by 釣り師
>再度書きますが、
>DXライブラリを使用するにはWin32 プロジェクトにしないとダメです。

なんだか、勘違いしていたようです。

DXライブラリのサイトの使い方に沿ってもう一度やり直してみましたが、
> : fatal error C1033: プログラム データベース '' を開けません。
やはりこのエラーがでたままです。
他のエラーは無くなりました。

Re:コンパイル時のエラー

Posted: 2010年9月19日(日) 21:27
by 五反田
こんばんは。

見当はずれのことを言っているかもしれませんが、2つ提案?が。

・プロジェクトを置く場所を出来るだけ浅い階層にするとどうなりますか?(出来ればドライブ直下で)
その際、フォルダの名前がアルファベットだけで構成されるようにしてみてください。

・もう一つは、ディスクチェックをかけてみてください。
Microsoftのページを見ると、disk error と書かれていたので、どこか調子が悪いのではないかと思いました。

よければ試してみてください。
最初のほうで貼られたURLに似たようなことが書いてあるみたいです。

Re:コンパイル時のエラー

Posted: 2010年9月21日(火) 13:04
by 釣り師
五反田さん

返事が遅れてしまい申し訳ありません。

ディスクチェックをしたところ、無事にコンパイルできるようになりました!(ディスクチェックになぜか4時間もかかりましたが^^;)

解決とさせていただきます。有難うございました。

Re:コンパイル時のエラー

Posted: 2010年9月22日(水) 07:53
by 五反田
出来るようになってよかったですね。
あと、解決マーク忘れてますよ~。

Re:コンパイル時のエラー

Posted: 2010年9月23日(木) 08:32
by 釣り師
すみません!
すっかり忘れていました。

DX のテクスチャ処理について

Posted: 2010年10月03日(日) 19:47
by スモモ
お世話になっています。

CreateTextureでのテクスチャができました。

テクスチャの内容を書き換えたいですが、どうすればいいでしょうか?

ご教授の程、よろしくお願いします。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 19:57
by スモモ
補助説明

作ったテクスチャをオフスクリーンとして扱いたいです。

ご教授の程、よろしくお願いします。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 19:57
by シエル
テクスチャの内容を書き換えるにはD3DUSAGE_DYNAMIC及びD3DPOOL_DEFAULTでテクスチャを作成する必要があります。

あとはLockRectメソッドでロックしたら、自由に書き換えて下さい。

http://marupeke296.com/DXG_Font.htmlを参照すればわかりやすいかと。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 20:10
by スモモ
ご回答ありがとうございます。

もし、書き換えの部分を LPD3DXSPRITE の Draw みたいに扱いたいならどうすればいいでしょうか?

ご教授の程、よろしくお願いします。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 20:20
by シエル
書き換えたテクスチャをそのまま、Drawメソッドで使えばいいと思いますが。

DrawPrimitive等でやる場合もその書き換えたテクスチャをSetTextureでセットして
描画するだけです。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 21:18
by lriki
はじめまして。
読んでいて気になるところがあったのでちょっとだけ補足です。

普通の(動的でない)テクスチャを作って LockRect でロックする場合、USAGE は 0、POOL は D3DPOOL_MANAGED でOKです。

質問には直接関係ないですけど、「D3DPOOL_DEFAULT かー… 管理めんどくさいなー」って思われたなら D3DPOOL_MANAGED で作ってみるのがいいと思います。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 21:25
by シエル
>>りゅんさん

補足ありがとうございます^^
動的テクスチャでもD3DPOOL_MANAGEDを指定して大丈夫なんですか?

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 21:45
by lriki
http://msdn.microsoft.com/ja-jp/library/cc324365.aspx
にも「D3DUSAGE_DYNAMIC と D3DPOOL_MANAGED は互換性がないので、同時には使えない」って書いてあるので無理っぽいです。

実際にそれでテクスチャ作ってみたら、CreateTexture がエラーを返しました。

Re:DX のテクスチャ処理について

Posted: 2010年10月03日(日) 21:51
by シエル
>>りゅんさん。
やっぱり無理ですよね。調査ありがとうございました^^

Re:DX のテクスチャ処理について

Posted: 2010年10月04日(月) 18:06
by スモモ
皆様、ありがとうございます。

奇想天外ですが、こんなコード思いつきました。

LPDIRECT3DTEXTURE9 pTexture;
pDevice->CreateTexture (100,100,1,D3DUSAGE_RENDERTARGET,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&pTexture,NULL);
LPDIRECT3DDEVICE9 pDevice;
pTexture->GetDevice(&pDevice);
pDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZWRITEENABLE,TRUE);
pDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);
pDevice->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(255,0,0),1.0,0);
pDevice->BeginScene();
pDevice->EndScene();
pDevice->Present(NULL,NULL,NULL,NULL);

エラーがないですが、うまくいかない。(テクスチャの内容を書き換えてないみたい)

ご教授の程、よろしくお願いします。

Re:DX のテクスチャ処理について

Posted: 2010年10月04日(月) 18:22
by シエル
すいません。結局何がしたいのでしょうか?

テクスチャをレンダリングターゲットにしたいのですか?
それならまず、テクスチャのサーフェイスを取得したあと、
SetRenderTargetでそのサーフェイスを指定しなければなりません。

レンダリングターゲットに設定した後は、通常通り描画するだけでテクスチャに描画されます。
当然ですが最終的には元のバックバッファに描画することになると思いますので、
あらかじめ、バックバッファのサーフェイスを取得しておかなければなりません。

提示していただいたコードでは、ただテクスチャを作って、ただバックバッファをクリアして、
何も描画せずに終了しているだけです。

何がしたいのかまったく見えないので、誰にでも分かるように具体的に説明して下さい。

よろしくお願い致します。

Re:DX のテクスチャ処理について

Posted: 2010年10月04日(月) 19:03
by スモモ
説明不足ですいません

私がやりたいのは動的テクスチャを作って、

それでそのテクスチャをいろいろなところで描画したいです。

Re:DX のテクスチャ処理について

Posted: 2010年10月04日(月) 20:32
by うしお
動的テクスチャを作って、
それでそのテクスチャをいろいろなところで描画、
というのをもう少し具体的にいうとどのようなことでしょうか?
もうちょっと情報が必要だと思います

Re:DX のテクスチャ処理について

Posted: 2010年10月04日(月) 20:38
by シエル
もっと具体的に説明していただかないと、アドバイスできません。

Re:DX のテクスチャ処理について

Posted: 2010年10月05日(火) 04:25
by スモモ
実は動的テクスチャを作るクラス制作中です。

できたテクスチャを3Dモデルに張ったり

(たとえば、花瓶やガラスなどのひび割れ、壁の張り紙やポスター、布や紙などのしわなど)、

文字のウインドを表示したりしたいです。

一度作ったテクスチャは何度でもつかいたいです。

半透明や透過や変色なども実現したいです。

ご教授の程、よろしくお願いします。

Re:DX のテクスチャ処理について

Posted: 2010年10月05日(火) 07:17
by うしお
やろうとなさっていることが、
ちょっと多くの要素を含んでいるので、一つ一つ分割して挑戦してみてはいかがでしょうか?

このサイトが参考になると思います まるぺけつくろー様です
http://marupeke296.com/DirectXMain.html

>花瓶やガラスなどのひび割れ、壁の張り紙やポスター
 →おそらく出来たテクスチャを2枚重ねと言う意味でしょうか
  でしたら、マルチパスレンダリング
  マルチパス テクスチャー ブレンディングあたりでしょうか
>文字のウインドを表示したり
 →こちらはID3DXFontを使わず高速に描画したいということでしょうか?
  紹介したサイトのその5あたりのトピックでしょうか  
>半透明や透過や変色→アルファブレンド 線形合成 加算合成 減算合成 乗算合成

directxはちょっとしたことに思えても、
たくさんのプロセスが必要な場合が多いと思います
やりたいことを分割して、一つ一つ手の届くところから挑戦していってはいかがでしょうか?

まずはアルファブレンドで2枚のテクスチャを重ねるところあたりが簡単かなと思います

Re:DX のテクスチャ処理について

Posted: 2010年10月05日(火) 07:57
by シエル
動的テクスチャを作りたいって言ってるのは、
ただ画像を読み込んでテクスチャを作りたいってことですか?

それともCreateTextureで作って、自分でデータを書き込んでテクスチャを作りたいってことですか?

まあどちらにしても、うしおさんが貼ってくださっているサイトを参考に順番に一から勉強して
いってください。

前にもスモモさんにはそのサイトを教えたはずなので、ずっとそこで勉強されているものだと
思ってましたが、もしそのサイトだけで理解が出来ないのであれば、
参考書等を購入することをお勧めします。

以上。 画像

Re:DX のテクスチャ処理について

Posted: 2010年10月08日(金) 22:42
by スモモ
皆様、ありがとうございます。

勉強させていただきます。

シエルさん

私のことを気にかけていただいてありがとうございます。

Re:DX のテクスチャ処理について

Posted: 2010年10月08日(金) 22:46
by スモモ
しばらく、勉強させていただきます。

 〆マス