DLLクラスとwchar_t

大量のDLLを扱うわけですが、いろいろと面倒です。ソースもだいぶエントロピーが増大してきました。
熱力学第二法則により、宇宙のエントロピーは増大し続けるのです。

DLLクラス


しかし問題なので、DLLを扱う部分をクラス化してみました。
従来通り、配列として使うことを想定しているので、コンストラクタは引数もなく、仕様もシンプルです。

メソッドは次の通り。

Load LoadLibraryする
Free FreeLibraryする
GetHandle HMODULEを得る
GetProcAddress 関数のアドレスを得る

但し、Freeはデストラクタで自動的にするので、基本的に使わなくても良い。
使うのは、符号を切り替えたりする時、前のDLLをFreeして新しいDLLをLoadする時だけ。
classは、こういうことが可能なので便利ですね。


あと、GetProcAddressですが、関数まわりのキャストが大変煩わしかったので、先人の知恵を借りて、structとtemplateを上手く用い、簡単に書けるようにしてみました。
おかげさまで、だいぶ見栄えがよくなりました。ありがとうございます。

参考元を、謹んで紹介させて頂きます。
http://snak.tdiary.net/20080328.html#p01


ファイル名をどうするか


更に別件で、突如として降って湧いた大問題「ファイル名はwchar_tで扱わないと多言語処理で問題があるのではないか」という件。
これを実現するため、これまでstd::stringだった部分をstd::wstringにしたり、main()からwmain()にし入力をwchar_t **argvで得られるようにしたり、大規模な変更をすることになった。

コンパイル時オプションに「/D "_UNICODE" /D "UNICODE"」などを加え、WIDE版のAPIを使うように設定を変えた。

DLLリストや符号名リストのTSVは従来通りASCIIのファイルで、変更する予定がないので、内部ではcharとwchar_tを変換するWinAPIなども呼んでいます。


それでも何とか対応でき、無事に「♥.txt」とか、「♨.txt」なんていう、世界中に意味が伝わりそうなファイル名も、無事に読み書き可能になりました。

なお、ファイルを扱うのはアプリ側のみなので、DLLは従来通りです。


まぁもっとも、そんな名前付けても、現状殆どのWindowsアプリケーションは未対応なので、満足に扱えそうにありませんが。
現在使用中のエディタ、WZ Editor 5も対応していないようです。

Mozilla FirefoxやchromeにD&Dしてみたら表示された。対応しているらしい。
IE7にも試したが、表示されない。M$製なのに何を考えているんだろう。
Operaもだめだった。

ちなみに、将来的にはDLL含めLinuxあたりへの移植も想定していますが、この辺が実装されているのかどうか、不安です。

続き→

2008/12/08(月)13:57 |Comments(0) |Trackback(0)

C++ | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

やっぱりwchar_tよりchar ホーム ベトナム語
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

04 | 2017/05 | 06
- 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 31 - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR