人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: gakyou
●カテゴリ:ウェブ制作
✍キーワード:C++Builder DLL LIB インポート カエラー
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● U40
●10ポイント

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

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

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


2 ● ohmix1
●10ポイント

当方、C++Builder5触ったことが無いので、頓珍漢ならごめんなさい。

OO4OはCOMオブジェクトなので、インポートライブラリを作成できたとしても、

- DllGetClassObject

- DllRegisterServer

- DllUnregisterServer

くらいしか取得できません。

結局、COM-APIを使うことになりますので意味がありません。

もしかして、インポートライブラリではなく、タイプライブラリ(tlb)を作成したいのではないですか?

タイプライブラリならCOMをC++のクラスとして取り込めると思うのですが。

C++Builder5ならtlibimpというのが入っているみたいです。

http://www.borland.co.jp/cppbuilder/cb5/cb5feature/cb5feature_la...

参考:

http://www.aspsms.com/dll/delphi.asp

aspsms.com - Active-X Component - Import of DLL to Delphi.

http://www.borland.co.jp/download/readmest.txt

「TLibImp」のあたり


3 ● aki73ix
●50ポイント

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

Borland Software - Technical Support - Resolutions Knowledge Base

IMBLIBだけでは駄目ですよ

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

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

http://www.geocities.com/Tokyo/Ginza/5432/documents/winprog/


4 ● finite_fairy
●50ポイント

implibには

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

-c Case sensitive symbols

-f Force imports by name (with hints)

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

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

◎質問者からの返答

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


5 ● wm5775
●50ポイント

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ