C++

iPhone用に PCRE (Perl-compatible regular expressions) をbuild

C++

PCREを使うことになったので、arm向けの buildコマンドのメモ。 10/03: armv7s版のライブラリもbuildするように手順を変更しました。前提となる環境が更新されていて、以下の通り。 OS: MacOSX 10.8 Mountain Lion コンパイラ: XCode 4.5 *1 PCRE は ver 8.3…

iPhone用に boostのユニバーサルスタティックライブラリを作成

C++

色々と調べたけど、現状の最新環境でうまく行かなかったので、最終的に作成した手順をまとめておくことにしました。前提として、以下の環境でユニバーサルスタティックライブラリを作成 OS: MacOSX 10.8 Mountain Lion コンパイラ: XCode 4.4.1の clang さら…

MacOSXの Homebrewで最新の GCC 4.7.0 をインストール

C++

普通にはbrewではgccをインストールできません。しかし、XCodeでインストールされるgccは Ver.4.2と古いので C++11標準の機能はまったく使えません。たぶん、clangを使えということなんでしょうけど、gccを使う必要があったのでインストール方法を調べました…

DevQuiz

先週末、とりあえずチャレンジ以外のとこだけ終わらせて、平日に入ってからちまちまとスライドパズルに挑戦しているんですが、難しいですね。 とりあえず、3x3を全探索で解くことはできたけど、このままじゃ3x6でも全然終わらないので枝刈りを考えないとダメ…

EnumでIndexを指定する配列

C++

タイトルのようなものが欲しかったので自分で書いてみました。しかし、C++のenumは型ではない微妙なものなので色々と不便ですね。 #include <vector> template<typename T, typename Enum, int Size> class EnumArray { public: EnumArray() :_array(Size) {} EnumArray(T init) :_array(Size, init) {} ~E</typename></vector>…

テンプレートを使っていて、分かりづらかった文法のメモ

C++

引数の char[] 型から文字数を知る まずは、char[] を引数に受けて文字数を知りたい時のテンプレートの書き方。 template<typename CharType, int N> void copy(CharType (&c)[N], const std::string& str) { std::strncpy(c, str.c_str(), N); } 「CharType (&c)[N]」のところがポイン</typename>…

C++ STLのstd::mapで、あるKeyに対応するデータの参照を取得する方法

C++

http://codepad.org/vFVp4vmw 自分のための備忘録。 Keyに対応するValueが存在していても、していない場合にも問題なく参照が取得できるようになっています。MapType::mapped_type の初期化処理が必要ない場合には、普通に operator[] で参照を取得できるの…

ExcelのRTDサーバーを、VC++で書いてみた。

12/30追記:interface IControllerのidl定義が抜けていたのを追加。ref: ExcelのRTD用DCOMサーバの作り方 - しがないプログラマ の日記 昔にVBででっち上げたCOMサーバーを、VC++で書き換えてみようと思い立ち挑戦してみました。この辺りの情報は、英語では…

VC++のATLを使って、COMを書くときのTips

COMのプログラムをする際に、一番問題になるのが BSTRを使った文字列の処理です*1。一つ扱いを間違えるとすぐにメモリーリークを引き起こす原因にもなるため、細心の注意が必要です。 基本的には、[in] BSTR、[out] BSTR*、と受け取る際には BSTR型で、値を…

boost の Unit Test Framework を使ってみた。

C++

日本語の情報が少なくて、色々とはまったのでメモ。 使用したバージョンは 1.40です。たぶん、1.37以降では使えると思います。環境はWindowsなので、Visual Studio 2008を使用しています。 インストール http://www.boostpro.com/download からインストーラ…

EclipseのCDTで、boost!

Windowsの Eclipseで C++開発をする際に boostを使う方法ではまった所をメモ。・http://www.boost-consulting.com/products/free より、最新版をDownloadしてきます。VC++7.1 もしくは VC++8.0 で開発する分にはこちらをインストールすれば全て完了です。デ…

Eclipseで、C++の開発

Windows上で、Eclipseを使った C++の開発環境を作る手順のまとめ。・Eclipse + CDTをDownloadして展開します。以下のURLから「Pleiades All in One 日本語ディストリビューション」でCDT入りのモノを選ぶと楽ができます。 Eclipse 日本語化 | MergeDoc Proje…

managed→unmanaged でのデータ管理

C++

managedのbyte[]と、unmanagedのchar*を相互変換する方法unmanaged→managedの場合 char value[256]; 〜 size_t len = strlen(value); System::Byte bytes[] = new System::Byte[len]; System::Runtime::InteropServices::Marshal::Copy(value, bytes, 0, len…

managedとunmanagedでまたハマる

C++

実行時に突然、MarshalDirectiveExceptionという例外が発生し「パラメータ#1 を修正できません。このクラスの型の定義にレイアウト情報がありません。」というメッセージが表示されました。しかし、まったく意味がわかりません。MSDNでこの例外クラスのとこ…

managedとunmanagedの世界を行き来するには

C++

managedの文字列データをunmanagedの文字列データに変換する方法 String* str = "〜"; char* cStr = static_cast( System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str).ToPointer() ); 上記のデータを使い終わったら下記の方法でメモリを…

パフォーマンスについて

昨日、以下のようなマルチスレッドのプログラムをC++のnativeなものとC#の.NETアプリケーションでそれぞれ作成し、パフォーマンスの測定を行いました。 一つのスレッドで双方ともnativeなC++でデータを10000個生成し、キューに入れていく もう一つのスレッド…

GigaBASE

C++

Object-Relational Database Management Systemにある、GigaBASEというデータベースシステムの調査を仕事でしてました。インメモリDBでして、全てのデータをメモリ上に置いておくデータベースです。ORDBMSのようで、オブジェクトをそのまま扱えます。その代…

Visual Studio 2005 Express Edition

とりあえず、仕事で使うことになるのは2003ですが忘れないうちに自宅のPCにインストールしておこう。 URLもメモメモ http://www.microsoft.com/japan/msdn/vstudio/express/

本を2冊

美しいC++プログラミング見本帖作者: 柏原正三出版社/メーカー: 翔泳社発売日: 2004/10/09メディア: 単行本購入: 1人 クリック: 6回この商品を含むブログ (17件) を見るこれから、C++を本格的に勉強しようと思い新宿に行く用事があったので紀伊国屋に行って…

言語仕様が煩雑すぎる……。

C++

前々から思ってましたけどC++の言語仕様は複雑、と言うか煩雑過ぎる気がします。さらに、昔と今ではいくつか変わってきていたりして色々と便利な仕様が追加されているのは分かるのですが、覚えること多すぎ!と言うか覚え切れません! さらに、Javaと比較し…

ようやく解決!

C++

しかたないので一つづつのコマンドを manで調べて行ったらなんとか解決できました。 gccはコンパイル+リンクをしてくれる。ここまでは分かっていて、昨日の時点でさらに gccはコンパイルを行ってリンクの処理自体は ldコマンドに投げていたことが判明。ld -…

boostでハマリ・・・。

C++

C++のライブラリでboostというものがあるのですが、これのインストールでハマりました orz Let's Boost - インストール方法、このページを見て Windowsにインストールはうまくいったのですが、Linuxにインストールしようと色々とやったのですがまったく使え…