Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。
著作とお薦めの品々は
著作とお薦めの品々は 東方熱帯林へ。
わんくま
CodeZine
@IT
AWARDS
Microsoft MVPfor Visual Developer - Visual C++
Wankuma MVPfor いぢわる C++
Nyantora MVPfor こくまろ中国茶
Xbox
Links
C++/CLIでの System::String^ と std::string と std::wstring とconst char* と const wchar_t* との間を行ったり来たりする方法。
どぞ、よろしく。※ IBM ICU(International Components for Unicode) も紹介しちょります。
投稿日時 : 2010年1月26日 21:47
IBMのICUは知らなかったです。 いいですね。 >32bit/64bitを実行時に自動切り替え エレガントな方法は知らないですが、 エレファントには、動的なリンクするとかですかね。プラグイン的に。 あとは、ネイティブプログラムはコンソールプログラムにして、標準入出力でやりとりするとか。 ですかね。
「足して2で割り損ねた」 冒頭から素敵ですw さておき、ウチでも32/64切り替えはT.Hiraseさんとたぶん同様で、 hoge_32.dll、hoge_64.dll、 ついでに開発中はデバッグ版も hoge_32d.dll、hoge_64d.dll とかC++/CLIで作っておいて、 .net側アプリの実行時に環境しらべて動的にリンクするようにしていました。 …今それをやっていた時のソース見たら… switch(IntPtr.Size){ ... } とかやって32と64を判定、 デバッグ版を使うかは #if DEBUG ... #endif とやってAssembly.LoadFromするファイル名を決定していました。
んむ、実行時に32/64判定して動的にloadするか、あるいはinstall時にぶっこむDLL(アセンブリ)を選択するか。 Fat-binaryてな手段はないのかしら。 32/64双方のDLLをマージして一本のDLLに仕立て、load時にどっちかが適切に選択される、みたいな。
OSが32/64は、シームレスに切り替わらないので 実行時判定ではなく、インストールするファイルをどっちにするか?で 決めるのが、いちばんスマートかつ正規の手段です。 そのためにセットアップという技術があるんですからwww
> インストールするファイルをどっちにするか ですかー。 いやさ、「.NETは.exeと.dllだけコピれば動くヨー」みたいなとこがあるやないですか。 誤解(拡大解釈)かもしれんけど。
.NET は!ですよねw C++/CLI は、純粋な .NET アセンブリにはならないので Any CPU がないw だから、コピーすれば動くとはならないんですよねーw
でも、Macでいえば、UniversalBinary的なものとかがあれば できるんですよねぇ・・・・。
Windows の場合、MACとは異なり、64bit でも、IA64があります。 なので、UniversalBinary的なものは作れないんじゃないかなぁ? Linuxができていないように。。。
> IA64があります。 ねーよ(めったにw)
w HPが出してますよ! 店頭では見た事ありませんがw<売ってねーよ!
> 売ってねーよ! 買えねーのかよ!
今は個人では買えないと思いますよw たぶん。。。ですがw
個人では買えないのかー 「お代官様、これがご禁制の'いたにうむ'でございます」 「ふっふっふ。えちぴ屋、おまえもワルよのぅ...」 # 天井裏に弥七。お銀姐さんは入浴中。
記事を参考に、早速ICUを使っていたのですが、Linuxでは変換後の文字列を出力できませんでした。 ICUのUCharは16bitですがLinuxではwchar_tは4Byteとなっているのが原因ではないかと思い、現在検証中です。 (Windowsではwchar_tは2Byte)
あー... <ustdio.h> for C <ustream.h> for C++ が用意されてます。こいつらでなんとかなるかもです。 http://icu-project.org/apiref/icu4c/
vV8vNA Thanks for the blog post.Much thanks again.
Powered by: Copyright © επιστημη