トップ «前の日(07-03) 最新 次の日(07-05)» 追記

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2005-07-04 [月]

[Programming] Visual C++ Toolkit 2003 + DirectX 9.0の環境構築メモ

必要なもの

※以下で説明するパスは自分の環境に合わせて読み替えてください。(ドライブ名やインストール先)
1. 上記の3つをインストール
2. Windows XPなら「システムのプロパティ」→「詳細設定」→「環境変数」でPATHにC:\Program Files\Microsoft Visual C++ Toolkit 2003\binを追加
3. C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin\vcvars32.batを編集

@echo off

SET PFSDK=C:\Program Files\Microsoft Platform SDK
SET VCTK=C:\Program Files\Microsoft Visual C++ Toolkit 2003
SET DXSDK=C:\Program Files\Microsoft DirectX 9.0 SDK (June 2005)

SET PATH=%VCTK%\bin;%PFSDK%\Bin;%PFSDK%\Bin\Win64;%PATH%
SET INCLUDE=%DXSDK%\INCLUDE;%VCTK%\include;%PFSDK%\Include
SET LIB=%DXSDK%\Lib\x86;%VCTK%\lib;%PFSDK%\Lib

echo OK

4. 作業ディレクトリでプログラムを作成
5. コマンドプロンプトを開いて、作業ディレクトリに移動
6. > vcvars32を実行し、環境変数を設定
7. cl.exeでコンパイル、link.exeでリンク、rc.exeでリソースなのですが、makefileを作成し、ビルドを自動化

EXE = sample.exe
SRC = sample.cpp
OBJ = sample.obj
LIBS = d3d9.lib d3dx9.lib dxguid.lib winmm.lib kernel32.lib user32.lib gdi32.lib

CC = cl.exe
CFLAGS = /c /W3 /O2

LINK = link.exe
LFLAGS = /SUBSYSTEM:WINDOWS

all: $(EXE)

$(EXE): $(OBJ)
	$(LINK) $(LFLAGS) /OUT:$(EXE) $(OBJ) $(LIBS)

$(OBJ): $(SRC)
	$(CC) $(CFLAGS) $(SRC)

clean:
	del *.obj

8. > nmake でビルド
9. 実行ファイルが完成してうれしいね

もし、コンパイルで失敗したらソースコードを見直してください。リンクで失敗したら、必要なライブラリがLIBSに記述されているか確認してください。あとは単純にタイプミスとか、コンパイル漏れとか。

本日のツッコミ(全3件) [ツッコミを入れる]

てっつん [おーっとさっき電話した時はコレを見逃していた…。めちゃめちゃプログラムの話題振ってくれていたのね…。9をするなら対応..]

SewiG [私のメインPCはGeForceFX 5500ですよ。 あー、5200買いましたか。XだったらnVIDIAなのかな。ド..]

てっつん [実質的にはATIでも問題ないだろうけど、比べた時、radeonでは問題があった、てのをネットで2件ほど見かけたので(..]


2006-07-04 [火]

[Programming] 集合書き込みと拡散読み出し(2)

で、集合書き込みで書き出したデータを読み込む方法を考えます。拡散読み出し(scatter read)は、集合書き込みとは逆にiovecにデータを格納します。

ssize_t readv(int  fildes,  const  struct  iovec  *iov,  int  iovcnt);

writevとほとんど同じですね。ただ、どういうバッファを書き込んだかを読み込む側が知っている必要があります。なので、引数に渡す前に、iov_lenにバッファ長をセットしておきます。

#include <stdio.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
	int i;
	int fd;
	int iovcnt;
	struct iovec iov[3];
	char buffer1[5];
	char buffer2[19];
	char buffer3[3];

	iov[0].iov_base = buffer1;
	iov[0].iov_len = 4;
	iov[1].iov_base = buffer2;
	iov[1].iov_len = 18;
	iov[2].iov_base = buffer3;
	iov[2].iov_len = 2;

	iovcnt = sizeof(iov) / sizeof(struct iovec);

	fd = open("hoge.txt", O_RDONLY);
	readv(fd, iov, iovcnt);
	close(fd);

	for (i = 0; i < 3; i++) {
		iov[i].iov_base[iov[i].iov_len] = '\0';
		printf("%s", iov[i].iov_base);
	}
	printf("\n", iov[i].iov_base);

	return 0;
}

2007-07-04 [水]

[Other] 七夕の準備

最近、雨が降り続いててなんて梅雨入りが遅いんだろうなどと思ってたりします。

今週末は七夕ですね。今日は研究室の裏山から笹を調達してきました。雨が降る中、状態が良さそうなものを見つけて、土台はこれでOK。あとは、折り紙で飾りつけ。そして、短冊に願い事を書きました。こういうアナログな作業って、日ごろの疲れを忘れさせてくれるから好きなんですよ。

本日のツッコミ(全1件) [ツッコミを入れる]

Qiztina [Frkanly I think that's absolutely good stuff.]


Copyright © 2004-2008 SewiG All rights reserved.