- ベストアンサー
VB.NETで、DLLを頂いたんですが・・
VB.NETでプログラムを作成しているのですが、 DLLを頂きました。 このDLLをプログラムで使いたいのですがよくわかりません。 (1)DLLは実行ファイルにおけばいいんですよね? (2)DLLを参照しろっていう設定は必要ですか? (3)DLLには、プロパティ、メソッド、イベントとあるみたいなんですが、これらを宣言しないといけないと思うのですがどうやればいいのでしょうか? (4)下のような資料もらったのですがVBcnvというのが定義されていないとエラーがでるのですがどうやって宣言するのでしょう? private <任意名> as VBcnv (5)libファイルも一緒にあったのですが、どういう風に使えばいいのでしょうか?何につかうのでしょうか? すいません、どなたかお助けを~
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
> 参考資料にはVB6.0のdll追加方法が書いてありまして、それには、参照設定という画面が書いてあります。 それならCOMですね。 >(1) インストーラが用意されていないのであれば、手動でレジストする必要があります。 >(2) VS.NETのプロジェクトがCOMを参照する必要があります。 >(3) 必要ありません。 VS.NETのプロジェクトがCOMを参照すれば自動的にラッパークラスが作成されます。 オブジェクトブラウザでプロパティ、メソッド、イベントを確認できます。 >(4) private <任意名> as new ラッパークラス名 >(5) 謎。
その他の回答 (6)
- bob_n
- ベストアンサー率35% (610/1732)
VBcnv.名前とゆうことは、DLLから返ってくる答えが、構造体(typeで宣言してある)のポインタ(変数の置かれている場所)としてもどってくるとおもいます。 構造体の定義もしないとだめだと思います。 例として、VBcnvがDVDプレーヤーだとします。 名前とゆうのは、DVDプレーヤーのなかのplayボタンという風に、VBcnv.のなかにいろいろな変数が定義されているとゆうことです。(わかりにくいかもしれませんが) >DLLは市場にでているようなDLLではなく、ファイル変換を手助けしてくれるようなDLLなのです。 自分で作ったものでも手続きは同じです。
お礼
ありがとうございます。イメージはちょっとわかりました。勉強しなおしてみます。
- JeanneNet
- ベストアンサー率48% (100/208)
#1 の者です。 > Private Shared [Sub | Fucntion] [識別名](ByVal [引数] As [型]) [As [型]] > End [Sub | Function] > どっちでもいいのでしょうか? 大切なのはその上にあった属性なんですが... DllImport 使った方が良いですね。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcwlksysimportattributetutorial.asp
お礼
ありがとうございました。難しくてよくわからなかったのですが、勉強してみます。
- lasichi
- ベストアンサー率31% (122/389)
No2です。 dllの中の関数を使うだけなんですよね? でしたらDll名、関数名、引数、戻り値があればさっき書いたように宣言して普通にソースの中で使えます。 VBcnvがDll名なんでしょうか? dllを使う為の宣言とプロパティ、メソッド、イベントは関係ないと思います。
お礼
ありがとうございました。やってみたのですが、エラーがでてしまって、勉強してみます。
- bob_n
- ベストアンサー率35% (610/1732)
つかう、DLLによっても違います。呼びだし規約があって、 それぞれ、違います。どのような、DLLかがわからないと説明しにくいです。 たとえば、WINDOSのAPIのを使う場合、[user32.dll]のウィンドウを検索する関数を使う場合は、 Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Long,ByVal hwndChildAfter As Long,ByVal lpszClass As String,ByVal As String,ByVal lpszWindow As String ) As Long のように宣言します。 hwndParent はロング型ですよ hwndChildAfterはロング型ですよ lpszClassはストリング型ですよ lpszWindowはストリング型ですよ 帰ってくる答えは、ロング型ですよ と、DLLを作った人が決めます。その、約束どおりによびださないと、エラーになったりします。 なので、その、DLLがどのようなものかわからないと、説明しにくいのです。
補足
DLLは市場にでているようなDLLではなく、ファイル変換を手助けしてくれるようなDLLなのです。 参考資料にはVB6.0のdll追加方法が書いてありまして、それには、参照設定という画面が書いてあります。
- lasichi
- ベストアンサー率31% (122/389)
1.実行ファイルと同じフォルダに入れておけばOKです。 2.3. 通常、 Public Declare Function 関数名 Lib DLL名 () As 型 のように書きます。(使いたい関数全て) 4.VBcnvとはオリジナルの型でしょうか? typeで定義してあげればいいと思いますが・・ どういうものか資料とかないのですか?? 5.dllとは関係ないと思いますがこれだけでは判断つきません。
補足
レスありがとうございます。 頂いた資料には、プロパティ、メソッド、イベントが書いてありまして、資料を見る限り、 プロパティとメソッドに関しては、すべて VBcnv.名前 となっていました。 プロパティ、メソッド、イベントがよく理解できていないのですが、 プロパティ=変数みたいなもの? メソッド=関数 イベント=Btn_clickみたいなもの? と認識しているのですがあっているのでしょうか。 だとすると、メソッドはPublic Declare Function 関数名 Lib DLL名 () As 型 でできそうなのですが、他の二つの宣言方法がわからないです>< また、イベントのソースってDLL側にあると思うんですが、イベント発生時に何かやりたいとした場合どうするんでしょうか?
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 この DLL がクラス ライブラリ (.NET のマネージコード DLL) なのか、そうでないかで回答が変わります。 > libファイルも一緒にあったのですが これを見る限り、前述ではない DLL でしょうか? だとすると、P/Invoke などを調べてみてください。 メソッドの定義はこんな感じです。 <DllImports("HogeHoge.dll" CharSet:=CharSet.Auto)> _ Private Shared [Sub | Fucntion] [識別名](ByVal [引数] As [型]) [As [型]] End [Sub | Function]
補足
DLLはVB.NETで作っていないと思います。 P/Invokeとはなんでしょうか?>< メソッドの定義はlashichiさんの Public Declare Function 関数名 Lib DLL名 () As 型 と JeanneNetさんの Private Shared [Sub | Fucntion] [識別名](ByVal [引数] As [型]) [As [型]] End [Sub | Function] どっちでもいいのでしょうか?
お礼
ありがとうございました。参照設定で参照するようにしました。プロパティに設定値をいれてみようとするとインスタンスがないといわれエラーがでてしまいました。もうすこし勉強してみます。