c++

リンクエラー

c++

1>LINK : fatal error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。のメモ。 VC2012をインストールすると、VC2010で出るようになるっぽい。 リンクオプションでインクリメンタルリンクをNOにする。premake4…

premake4によるライブラリ管理

Windows上のC++で開発をする場合、わりと依存ライブラリの調達がネックになる。単一のライブラリにだけに依存している場合は使うライブラリが提供しているdllをそのまま組み込めばよかったりするのだが、スタティックライブラリで単一のexeにしたかったり、…

FreeType2のメモ

c++

テキストをレンダリングするところまでこぎつけたので貼り付け。 // g++ -o sample -g `freetype-config --cflags` sample.cpp `freetype-config --libs` //#include <locale.h> #include <ft2build.h> #include FT_FREETYPE_H #include <string> #include <vector> #include <fstream> #include <cassert> #define FO</cassert></fstream></vector></string></ft2build.h></locale.h>…

terminfoでやってみる

cuiでプログラムする場合はだいたいcurses(ncurses)を使おうとして何かしっくりこないなーということになりがちだったのだが、w3mをチェックしてみて、cursesの下層のterminfoで使えばよかったんだよ、と気付いた。 で、やってみた。 #include <curses.h> #include <term.h> #i</term.h></curses.h>…

vc10express editionのisoが出ていますな

http://www.microsoft.com/japan/msdn/vstudio/express/乗り換えてlambdaとか使うぜ。

vcのmanifestに悩まされる

c++

R6034が出て頓挫中。 Blenderのビルドに使ったpython26.dllのmanifestとswigで作ったエクステンションのmanifestが合っていないっぽい?この際、埋め込んだmanifestを取り出してどこがおかしいか調べられるようになりたいところだがどうも良く判らん。 nmake…

swig(python編)

とりあえずpython2から。 VC9ExpressEditionで本家のcpythonバージョン2.6向けのモジュールをビルドしたメモ。swigは最初cygwinのものを使ったが、バージョンが1.3.38とちょっと古かったのでswigのサイトでwindows向けビルド(1.3.40)を落としてきた。ついで…

swigを使ってみる

せっかくなのでswigを使ってみることにした。 ruby(1.8.x, 1.9.x)とpython(2.x, 3.x)でやってみる予定。 メモ マニュアル http://www.swig.org/Doc1.3/Sections.html http://blog.ssktkr.com/swig-jp/_/ http://www.cozmixng.org/~rwiki/?cmd=view;name=SWIG…

ポリゴン読み込みライブラリの場所を確保

c++

なんとなくsourceforgeにアカウントをゲットしてみた。意外にもgmailのアドレスだけでアカウントが取れるようになっていてわりとお手軽。いろいろ機能盛りだくさんなのでおいおい見てみよう。 ライブラリの方は最低限の実装ができたのでgitリポジトリを作っ…

PMD用のスキンメッシュクラスをアップした

あまり需要が無さそうだがきりのいいところでいったんアップしてみる。 http://gunload.web.fc2.com/irrlicht/download.html ビルドにirrlicht-1.7.1, bullet-2.76, boost, glewが必要なのでちょっとめんどくさいが興味のある人はどうぞ。

dropがどうもよろしくないと思ったら

irrlichtはreferenceカウントがついているのに何か素のポインタ使っているのと使い勝手が変わらんなぁと思ったら、実際生のポインタで運用しているからだった。しかし、全部intrusive_ptrで包むのもつらいしどうしたものか。

boost.pythonでC++からpythonの関数オブジェクトをコールする。

boost.pythonのFAQにはこんなの http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/faq.html#funcptr が載っているがそりゃ無理だろうとw そうじゃなくて、普通にpythonのオブジェクトを取り出してコールする方法について。 #include <boost/python.hpp> #include <iostream> vo</iostream></boost/python.hpp>…

IKがようやく動いた

苦労したよw。 モーション関連でいろいろバグがありそうだったので、スキニングの処理に沿ってデータの読み込みから最終の行列まで途中の値をユニットテストで辻褄を合わせていく作業を敢行した。 まず、リファレンス実装として http://r13n.spaces.live.co…

tinyさん読み込み

去年から作ろうしていたモーション再生プログラムがやっと形になりそうだ。mmdのモーションを読み込んで遊びたい ↓ blenderのimporterを発見して改造(python) ↓ なんとなくデータ構造がわかったのでスタンドアロンの再生プログラムを作ろうとする(python) ↓ …

Boost.python使ってみた

ここのところwxWidgetsを使ってc++でごりごり書いていたのだが、やっぱりGUIをc++で書くのはめんどくさすぎるのでスクリプトを導入することにした。 速度が必要なところだけc++でモジュールを書く方向。去年の年末微妙に話題になっていたBoost.pythonでやっ…

Boost.pythonその2

vector_indexing_suiteではまった。 shared_ptrを格納したvectorから取り出したオブジェクトのメソッド呼び出しがうまくいかずにはまる。こんなの struct VertexBuffer { std::vector<boost::shared_ptr<IndexBufferArray> > &getBuffers(); }; エラー Boost.Python.ArgumentError: Python argume</boost::shared_ptr<indexbufferarray>…

undefined reference to `vtable...の対処

c++

こんなエラーが出た ../opengl/debug/libgldriver.a(opengl.o):opengl.cpp:(.text$_ZN6opengl5JointD1Ev[opengl::Joint::~Joint()]+0x3a): undefined reference to `vtable for opengl::Joint' こうなっていたのを class IJoint { 省略(virtualのインターフ…

dds読み込み

c++

帰省して戻ってきたら2週間くらいたってしまった。 ぼちぼち活動再開。 今回は、x形式のファイル読み込みで必要になったddsファイルのローダ。 DirectXに依存しないで読めるように自前で実装した(代わりにboost入っているけども)。 非圧縮の32bit形式まで動…

gccでのテンプレートクラスの継承

c++

Modern C++をかじったりするとやりたくなりがちなテンプレート継承なのだが、gccではこんなエラーが出る場合がある。 # template<class T> # class Loader : public Base<T> # でBase<T>::hogeをコールしているところで error: there are no arguments to ‘hoge’ that depen</t></t></class>…

reverse_iterator

C++

いざ使おうと思ったらやりかたが分からなかったのでメモ。 #include <string> #include <iostream> int main() { std::string hello="hello world!"; for(std::string::reverse_iterator rit=hello.rbegin(); rit!=hello.rend(); ++rit){ std::cout << *rit << std::endl; } }</iostream></string>

libpsd続き その3

c++

まとめとしてlibpsdを使って通常レイヤをpngにばらすコードを書いてlibpsd編は終わりにする。 // main.cpp // // $ g++ main.cpp -lpng -lpsd -ljpeg #include <libpsd.h> #define USE_PNG 1 #include "rgbaimage.h" #include <iostream> int main(int argc, char **argv) { if(a</iostream></libpsd.h>…

libpsd続き その2

c++

libpsdで正しく画像が取得できないので検証用に自前でC++で書いてみた。ちょっと手こずったが以前pythonで書いたpsdプログラムが役に立った。pythonの方はデッドリンクになっているから直さないといかんな・・・。 で、libpsdでは何故画像が正しく取れないの…

libpsd続き

c++

releaseで(NDEBUGを定義して)ビルドすると実行時にセグメンテーションエラーが発生する。 副作用のあるassertが原因と見て直した。 $ grep "assert(psd" *.c で出てくるところが副作用のあるassertでNDEBUGで消滅するとエラーになる。

libpsdを使ってみる

c++

今作っているプログラムでスプライトをわりと大量に生成している。 その中に元となるpsd画像をレイヤーが重ならないようにpngに変換して改めてパーツの座標をリスト化するというつまらん作業が含まれている。これは自動化しないといかんと思ったので、まずは…

gprofでコールグラフ

c++

MinGWで使えるプロファイラということでgprofを使ってみた。 すると出てきたテキストにコールグラフが含まれていたのでこれをビジュアル化する方法が欲しくなった。 探索したところちょうどいいツールを発見。gprofの出力結果をgraphviz向けに変換するpython…

CursesでReadlineを使う

boostを若干濫用気味にCursesのメインループを書いてみた。 さらにreadlineでのプロンプトも実験。 // g++ main.cpp -lreadline -lcurses #include <curses.h> #include <termios.h> #include <errno.h> #include <stdlib.h> #include <readline/readline.h> #include <readline/history.h> #include <string> #include <list> #include <map> #include </map></list></string></readline/history.h></readline/readline.h></stdlib.h></errno.h></termios.h></curses.h>

アンカーの判別処理を書いた。

判定アルゴリズムは、ある頂点に対してアンカーを構成するすべての三角形の平面の陰関数を解いて すべてが正、もしくは負であればアンカーの中にあるとみなすというもの。 を各三角形について算出(a, b, c, d値を求める)しておいて、対象の点(x, y, z)を代入…

ファイルダイアログメモ

c++

やっつけでglutに仕込むのに使った。 Windowsでは常にGetOpenFileNameが使えるが、 X11では何が入っているか判らないのが悩ましかったり。 適当なインタプリタ的なものからダイアログを開いて標準出力から結果を受け取るのがお手軽だろう。 Xdialogを使って…

unittest重要w

やっとmkmの読み込み処理が完成した。 しかし、恐ろしい試練だった。 要は、クォータニオンを右からかけるか左からかけるかという 一貫性の問題だったわけだがこれを修正するのがえらく難航。 DirectXとかを使っていれば多分起きない問題だが、 自前で数学ラ…

掌性が違う

D3DXQuaternionRotationAxisは関係なかった。 180度も関係ない。 うまくいかない原因は掌性の食い違いにありそうだ。 mqoが右手系なんで迂闊にもmkmも同じ掌性だとばかり思っていたがそうではないようだ。 mikotoはたぶんDirectXで書いているので左手系を使…