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側がクラスオブジェクト作成用の関数をエクスポートしていない場合は
どうすればいいのでしょうか?
H to Pas Converter
http://www5b.biglobe.ne.jp/~k-kumaki/tool/h2p.html
http://www5b.biglobe.ne.jp/~k-kumaki/
こんなん使えば?
H to Pas Converter を使ってみましたが、エラーばかりでクラス定義にはあまり役に立ちませんでした。
仮に、headerファイル(クラス定義の部分)を変換,翻訳できたとしても、クラスオブジェクトを作成する手段が無ければ、やはりDelphiから使うのは不可能なのだと思うのですが。どうなのでしょう?
ほんとにインポートの関数にクラスのオブジェクトを受け渡しするの?
それなら、作成したツールとまったく同等でなければ使用は不可能です。
なんせ、オブジェクトのメモリ配置はツール依存ですから。
多分そんなことはなくて、インポート用の関数はポインタや変数を
やり取りするだけなのだと思いますけど。ですから、インポートファイル
で相当するクラスの機能をラップした同等のクラスをDelphiで定義して
使うことになるんだと思います。
>なんせ、オブジェクトのメモリ配置はツール依存ですから。
ありがとうございます。
無理だと分かって、すっきりしました。
Microsoft Visual C++ 2005 Express Edition
+ Microsoft Platform SDK for Windows Server 2003 R2
+ Vs6sp6.exe
で、サンプル動いたので、こっちでどうにかやってみます。
ツイート | ![]() |