忍者ブログ
natsuの秘密基地です
はまり
はまり一件ごとのお話の流れです
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
プロフィール
HN:
natsu
性別:
男性
趣味:
酒など
自己紹介:
ここに書かれていることはフィクションです。
ブログ内検索
アクセス解析
[2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

OgreKitっていうものがあるみたいですね。
鬼車をラッピングしてMac向けの機能を追加しているようだ。


私はよく見ていないからわからないけど、
だいたいこういうものは一般的にいって、使いやすいんだと思う。
 
だから、今作っているアプリで正規表現検索を使いたいなら、
これを使えばいいんだとおもった。
 
 
 
だが、しかし、それより私が興味あるのはdlopen。
 
 
ウィンドウズ環境で、
C言語の寄せ集めでDLLを作ったとして、
DLLをロードしてその関数へのポインタを取得するAPIがあったような。
そんな気がするんです。
 
覚えてないですけど。
 
こんなんでオブジェクトを作成して関数で返したり、
できたんだかできなかったんだか覚えてないですけど。
 
 
インポートライブラリ?なんすかそれ。
 
 
っていう勢いなわけです。
 
 
 
ライブラリの中に関数やら構造体のインスタンスやらの、
シンボルが潜んでいるんでそれをロードして使えばいいわけです。
こんなかんじ?
 
 
 
 
解凍されたディレクトリに、
libonig.2.dylib
libonig.a
oniguruma.h
を仕込んでみてください。
ビルド完了時のシェルがちゃんと動けばいいんだけど。
 
パッケージの中にFrameworksディレクトリを作って、
ライブラリを送り込みたかったんで。
 
 
Xcodeでターゲットでファイルをコピー、かなんかでやりたかったけど、
プロジェクトにライブラリを含めなきゃならないみたいなので。
 
libonig.aは多分必要ないんです。
ただ、なんやかんややってるときに、
フレームワークとしてlibonig.2.dylibをプロジェクトに含めて、
ターゲット、ファイルをコピー、の項目にこれを入れておいたら、
libonig.aも勝手にコピーされてたので。
 
でも、自分が使う限り、libonig.aはいらなかった。動いたし。
 
あと、メモリーリークががんがんにおこるのも気にしないでね。
そこはまあ、自分的にどうでもよかったというか。
 
 
 
自分に対して2行ぐらいだから書けといいたい。
 
 
 
んで、ヘッダで定義されているdefineとかが使えないんですが、
まあ、適宜に宣言するということで。
 
注意したいのはOnigurumaのサンプルと違って、
OnigDefaultSyntaxではなくOnigSyntaxRuby
を使っていること。
 
OnigSyntaxRubyのシンボルをロードすると、
構造体インスタンスのハンドルがかえるんですけど、
OnigDefaultSyntaxのシンボルをロードすると、
構造体インスタンスのポインタのハンドルがかえる。
 
型がそこはかとなく違ってしまうわけなんですねぇ。
なので、OnigDefaultSyntaxを使いたい場合は、
 
void **p_OnigDefaultSyntax    = dlsym(p, "OnigDefaultSyntax");
 
r = (*p_onig_new)(&reg, pattern, pattern + strlen((char* )pattern),
ONIG_OPTION_DEFAULT, p_OnigEncodingASCII, *p_OnigDefaultSyntax, &einfo);
 
としなきゃなんないだろうなと、思ったり思わなかったり。
OnigSyntaxRubyでいいんじゃないでしょうか。
結局OnigDefaultSyntaxは&OnigSyntaxRubyだし。
 
 
そうね。私だったら、
OnigSyntaxPerlですわ。
 


うん。もちろん。ここではまり倒したよ。

 



 
で、実は正規表現について詳しくない。ってのは内緒ね。
 
 
PR
鬼車をとってきて、
がらがら回してみましょうということで。
 
解凍したらいつものとおりやっていく。
 
./configure
make
 
.libsにライブラリが出来る。
 
sudo make install
 
で、インストールされる。
Xcodeからもフレームワークとして追加できるようになる。
 
フレームワークとして追加して、
main.mに鬼車のサイトからとってきたサンプルを
べったり貼付ける。

ステップ実行。
ぽんぽん。
 
 
あらー。嘘みたい。うごくうごく。
 
 
うまくいったと思ったんですが、
リリースビルドがうまくいかない。
リンカがシンボルを見つけられてないような感じ。
 
で、デバッグの方もコンソールを見ると、
make installでインストールされた先のライブラリを見てる。
で、バンドルの中のFrameworksに入るように工夫したり、
いろいろやってみたけど、どうもうまく動く気配はない。
 

まあ、そうでしょ。
それ自体、XcodeやMacを意識してないだろうから。
動いたときたまげたもん。


 

アプリケーションバンドルの中に動的リンクなライブラリがあって、
それを実行時、プログラムに使ってもらえるのが理想。
 


 
そう。生じゃ食べられないときは調理すればいいんです。



 
とりあえず、
sudo make uninstall。
 
続く。
 
いま、正規表現検索をどうやって行うか模索中。
Pythonのコードを呼べるようになった今、
Pythonに丸投げでも可能だけども。
 
なんか、新しいことをやってる感が無いし。
それに、きっとObjective Cのコードから
そういうことが出来た方が幸せなのだと思う。
 
 
まあ、いろいろあるみたいですね方法が。
 
 
しかし、鬼車。
すごいネーミングのセンスだと思った。
ぐゎんぐゎん回しますよ的な。
 
巨大な文字から大事なところを千切りとってきますよ的な。
 
 
私の感じ方が異常なのかもしれないけど。
 
 
たぶん鬼車ベースでやると思います。
有名だし、
なにより名前が好き。
 


Copyright (C) 2010 NEST,
All right Resieved.*Powered by ニンジャブログ *Designed by にこるん  / 忍者ブログ / [PR]