CreateObjectではなくて、インポートライブラリを使用する形でです。
ちなみに「IMPLIB -a oraclm32.lib oraclm32.dll」でDLLからインポートライブラリを作成して、プロジェクトに追加したのですが、「外部シンボル未解決」のリンカエラーが出てしまいます。
http://member.nifty.ne.jp/h_kova/faq/main.htm
@nifty:@homepage:終了のお知らせ
リンク先の「●VC++で作成されたDLL(C++のクラスを利用)をC++Builderから利用する」の項をご覧ください。IMPDEF や バイナリエディタも使います。
当方、C++Builder5触ったことが無いので、頓珍漢ならごめんなさい。
OO4OはCOMオブジェクトなので、インポートライブラリを作成できたとしても、
- DllGetClassObject
- DllRegisterServer
- DllUnregisterServer
くらいしか取得できません。
結局、COM-APIを使うことになりますので意味がありません。
もしかして、インポートライブラリではなく、タイプライブラリ(tlb)を作成したいのではないですか?
タイプライブラリならCOMをC++のクラスとして取り込めると思うのですが。
C++Builder5ならtlibimpというのが入っているみたいです。
参考:
http://www.aspsms.com/dll/delphi.asp
aspsms.com - Active-X Component - Import of DLL to Delphi.
「TLibImp」のあたり
http://www.borland.co.jp/qanda/cbuilder/c0005026.html
Borland Software - Technical Support - Resolutions Knowledge Base
IMBLIBだけでは駄目ですよ
DEFファイルを作って名前解決をしたり、関数名にしたがって、定義を入れる必要があります
バイナリエディタでDLLやLIBを見てみると実際の関数定義が確認できるので参考になると思います
implibには
-a Add ’_’ alias for MS flavor cdecl functions
-c Case sensitive symbols
-f Force imports by name (with hints)
という名前解決に関するオプションがありますが、
それらは試されましたか?
結論から言うと、C++を含む外部インターフェースを持つDLLのインポート方法はありません。
先述に名前解決について述べられている方がいましたが、BCBとVCではクラスオブジェクトのDEFファイルでのシンボル表現規則が違います。
どこのページだったか忘れてしまいましたが、それぞれのシンボル表現規則について述べているページがありましたので、Perlなどを使ってDEFファイルを自前で作るしかないと思います。
オプションは全て試しましたが、駄目でした。