キッズプレート、パスタおかわり

プログラミングやデジモノについてあれこれ
--.--.-- --:--|カテゴリ:スポンサー広告| コメント(-)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2006.08.22 12:00|カテゴリ:VB.NETコメント(1)

C言語の誘惑、と言いながらVBでビルドしたDLLの利用法


 職業なんちゃってプログラマーな私ですが実はいままでC言語なんてものを全然触ったことがありませんでした。学生時代にちょっとやっただけで完全に忘却のかなたへと飛び立っております。まあそういったわけで先日C言語をちょっと触ってみようと思い本を一冊読んだのですが、

「へぇー、こんな言語なんだ」

 と、改めて思った次第。それなりにプログラムというものの知識を積み重ねてきた甲斐があったのかなかったのか、自分なりになんとなくC言語の雰囲気は感じとれたかなあと思っております。なんといっても文字列が数字として扱われている点が興味深かったです。日本語の扱い方などはまだ読んだ本には掲載されていなかったのですが、こういった仕組みなのであれば、知り合いのC言語な人がアスキー文字列を全てバイナリーコードで打ち込んでいるのを見ても納得です。嫌でも頭に入っちゃうだろうなあと思われます。まあそもそも何故いまさらC言語の勉強をやったのかといえば、今度やることになった案件で、

「言語はなんでもいいよ(≧∇≦)b 」

 と言われたのがきっかけ。それならC++でも使ってみようかなあと思ったのですがC言語自体が記憶にありません。それなら簡単な本を一冊ということで読書するにいたった次第です。そこで出た率直な感想としては、

「あえて手間がかかることはやめよう」

 ということでした。まあ今回のお話はVBのインターフェイスにちょっと別な機能を加えて欲しいということだったのですが操作するデータの種類や、やり取りの方法や開発期間などを加味すると、

「やっぱり物には向き不向きがあって、簡単に実現できるならば簡単な方向へとシフトするべきだ」

 と思った次第です。まあでも全然触ったことのないC言語への憧れはやっぱりあるのでそのうち挑戦しようと思います。

 さて、さっそくVBのインターフェイスに機能を実装しました。当然ソースはVBです(・∀・)いぇーい。 しかしここで問題が発生。

VBのソースにモジュールとして追加するぶんにはいいんだけど、他の人が簡単に使えるようにDLLみたいにできないの?」

 ということ。どうやらVBのプロジェクトを作成する際に「コントロールライブラリ」ってのを選択してビルドするとDLLができるようなのですが、他のプログラムからの利用方法がいまいちわかりません。しょうがないのでためしにC++でDLLを作ってみたのですがそちらは資料も充実しておりバッチリ使えることが判明。しかーし、VBでビルドしたDLLを使う方法がいまいちわかりません。ソースがVBならあえてDLLにしなくてもいいじゃんという声が聞こえますがまあそこはそこ。すでに作ってしまったVBのソースがもったいないのでいまさらC++で作り直しなんて嫌なこったいです。速度も特に問題なさそうですしね。
 さっそくネットで情報を検索。ところが「インターフェイスがどうのこうの」「ファンクションのエクスポートがどうのこうの」というお話ししかでてきません。MSDNのページで「VB DLL」で検索してみてもなんだか古臭い資料しか出てこないじゃありませんか。そこでさらに頑張って調べた結果、

「プロジェクトの参照設定に入ってるクラスライブラリを使って.NETはいろいろやってるんだよん」

 という記述。なるほど。VBで作ったDLLもクラスライブラリなんだからプロジェクトの参照設定に入れちゃえばいいのかなあということで実践。

 DLLを使いたいプロジェクトの「参照設定」を右クリックして「参照の追加」を選択。表示されたダイアログの右上にある「参照(B)」をクリックしてVBでビルドしたDLLを直接指定します。うーん、見事に追加されました。
 参照設定を設定したらあとは簡単です。使いたいDLL内のクラスを使いたいソースファイルの「import」文に参照設定で指定したDLLの名前(名前空間)を入れます。名前がわからないときは参照設定の項目をダブルクリック。オブジェクトブラウザでオブジェクトの構成が見れるのでもうばっちりですね。あとはクラスオブジェクトをNewで作って使うだけです。

「おぉー、ばっちり使えるじゃん( ゜д゜)ビンゴー」

 参照の追加ダイアログを見るとわかるのですが参照設定に加えるのはDLLじゃなくてEXEでもいいので他のアプリケーションのクラスが使いたかったらEXEファイルを参照設定に加えれば出来ちゃうんだろうなあ。まだ未検証ですがたぶんそうだと思います。ちなみにこうやって参照設定に加えたDLLはプロジェクトをビルドするとそのプロジェクトのEXEファイルと同じ場所に書き出されます。DLLを呼び出すEXEファイルと同じ場所に置く(プライベートDLLという考え方らしい)のが基本らしいのでそうしたほうがいいでしょう。そうそう、DLLの内容を更新した場合は、参照設定を一度削除して再度設定しないとうまく認識してくれないっぽいです。まあオブジェクトブラウザなどIDE側で認識してないだけで実際は更新されているのかもしれませんが念の為DLLを更新したら参照設定を一度削除して再設定したほうが無難だと思います。

 以上、今回試した内容の備忘録でございました。なお、この方法を試して「間違ってるぞ!」「変になっちまったよ!」などの自体に陥ったとしても悪しからず。
英語、韓国語、覚えよう!
子供と一緒にレッツハングル斜体の文
[ 2006/08/22 12:42 ] [ 編集 ]
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。