DLLから提供されているクラス、メソッドを使用するには?

解決


ンパンマン号  2007-05-25 15:25:35  No: 26276

Bluetoothのコントロールのために、BTW SDK http://www.broadcom.com/products/bluetooth_sdk.php を使用しようとしています。
C++用の *.lib, *.h ファイルは、用意(http://svn.plutohome.com/pluto/branches/2.0.0.39/src/WinBluetooth/inc/)されているのですが
当然?、Delphi用のファイルは用意されていません。
ドキュメントを見ると、DLLの関数をアプリケーション側から利用するのではなく、
DLLに用意されたクラス、メソッドを使ってアプリケーション側から操作するようになっているらしいです。

DLLから関数ではなくクラスが提供される場合、どのようにすればそのクラスをDelphiから使用できるようになるのでしょうか?
簡単な例を教えていただけないでしょうか。

検索してみると.
Using C++ objects in Delphi  http://www.rvelthuis.de/articles/articles-cppobjs.html
というページがあったのですが、今回のように、DLL側がクラスオブジェクト作成用の関数をエクスポートしていない場合は
どうすればいいのでしょうか?


○○ブー  2007-05-25 17:21:42  No: 26277

H to Pas Converter
http://www5b.biglobe.ne.jp/~k-kumaki/tool/h2p.html
http://www5b.biglobe.ne.jp/~k-kumaki/

こんなん使えば?


ンパンマン号  2007-05-26 04:15:23  No: 26278

H to Pas Converter を使ってみましたが、エラーばかりでクラス定義にはあまり役に立ちませんでした。
仮に、headerファイル(クラス定義の部分)を変換,翻訳できたとしても、クラスオブジェクトを作成する手段が無ければ、やはりDelphiから使うのは不可能なのだと思うのですが。どうなのでしょう?


だから  2007-05-26 12:45:52  No: 26279

ほんとにインポートの関数にクラスのオブジェクトを受け渡しするの?
それなら、作成したツールとまったく同等でなければ使用は不可能です。
なんせ、オブジェクトのメモリ配置はツール依存ですから。

多分そんなことはなくて、インポート用の関数はポインタや変数を
やり取りするだけなのだと思いますけど。ですから、インポートファイル
で相当するクラスの機能をラップした同等のクラスをDelphiで定義して
使うことになるんだと思います。


ンパンマン号  2007-05-27 09:04:51  No: 26280

>なんせ、オブジェクトのメモリ配置はツール依存ですから。
ありがとうございます。
無理だと分かって、すっきりしました。

Microsoft Visual C++ 2005 Express Edition
+ Microsoft Platform SDK for Windows Server 2003 R2
+ Vs6sp6.exe
で、サンプル動いたので、こっちでどうにかやってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加