C++Builder5でOracle9のOO4Oを使用する方法はありませんか?

CreateObjectではなくて、インポートライブラリを使用する形でです。
ちなみに「IMPLIB -a oraclm32.lib oraclm32.dll」でDLLからインポートライブラリを作成して、プロジェクトに追加したのですが、「外部シンボル未解決」のリンカエラーが出てしまいます。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/12 11:32:02
  • 終了:--

回答(5件)

id:U40 No.1

U40回答回数64ベストアンサー獲得回数02004/08/12 17:21:03

ポイント10pt

http://member.nifty.ne.jp/h_kova/faq/main.htm

@nifty:@homepage:終了のお知らせ

リンク先の「●VC++で作成されたDLL(C++のクラスを利用)をC++Builderから利用する」の項をご覧ください。IMPDEF や バイナリエディタも使います。

id:ohmix1 No.2

ohmix1回答回数235ベストアンサー獲得回数142004/08/16 16:24:14

ポイント10pt

当方、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」のあたり

id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272004/08/12 11:39:58

ポイント50pt

http://www.borland.co.jp/qanda/cbuilder/c0005026.html

Borland Software - Technical Support - Resolutions Knowledge Base

IMBLIBだけでは駄目ですよ

DEFファイルを作って名前解決をしたり、関数名にしたがって、定義を入れる必要があります

バイナリエディタでDLLやLIBを見てみると実際の関数定義が確認できるので参考になると思います

id:finite_fairy No.4

finite_fairy回答回数29ベストアンサー獲得回数02004/08/12 11:41:52

ポイント50pt

implibには

-a Add ’_’ alias for MS flavor cdecl functions

-c Case sensitive symbols

-f Force imports by name (with hints)

という名前解決に関するオプションがありますが、

それらは試されましたか?

id:gakyou

オプションは全て試しましたが、駄目でした。

2004/08/12 11:48:46
id:wm5775 No.5

wm5775回答回数351ベストアンサー獲得回数42004/08/12 15:40:51

ポイント50pt

結論から言うと、C++を含む外部インターフェースを持つDLLのインポート方法はありません。

先述に名前解決について述べられている方がいましたが、BCBとVCではクラスオブジェクトのDEFファイルでのシンボル表現規則が違います。

どこのページだったか忘れてしまいましたが、それぞれのシンボル表現規則について述べているページがありましたので、Perlなどを使ってDEFファイルを自前で作るしかないと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません