• 締切済み

ライブラリについて

MicroSoft VC++で作成された.dllや.libファイルはBorland C++Builderからは呼び出すことはできるのでしょうか?どなたか教えて下さい!!

みんなの回答

  • hogejo
  • ベストアンサー率42% (11/26)
回答No.2

defファイルで気をつけるべきは、以下の2点だと思います。 (1)正しくマングルされた関数名がdefファイルに書いてあること (2)その関数の序数が、DLL内の序数と合致していること nishimotuさんの場合は、インポートライブラリをリンクする際にエラーになったのだと思いますが、その際、マングル済みの関数名がエラーメッセージと共に表示されていると思います。それをdefファイルに書き写して、もう一度インポートライブラリを作り直しては如何でしょうか? Borlandのものを、VCから利用は経験ありますが・・・ 今回とは逆のパターンなので、正確なアドバイスはできないけど 投稿してみました。 以下は適当な解説です。 libは出来ないと思います。(インポートライブラリは後述) dllはできます。  VC製のDLLには、VC用のインポートライブラリ(lib)が同梱されていたかと思います。DLLはそのままC++Builderでも使用できますが、DLLとあなたのプログラムを結ぶインポートライブラリは、C++Builder用のモノを作る必要があります。 defファイルの?は、多分、VCでビルドした際に、extern "C"されていない(つまりC++リンケージの)関数だったことを表しているのだと思います。C++関数は、defファイルの関数名の記述に、引数の数などが必要だと思います。

参考URL:
http://fooo.boo.jp/304dlldef.html, http://fooo.boo.jp/
全文を見る
すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1
nishimotu
質問者

お礼

ありごとうございました!!参考サイトを読んでみたいと思います!!

nishimotu
質問者

補足

IMPLIBを使っても正常にリンクできませんでした…それで調べてみたのですが,IMPDEFをつかいモジュール定義ファイルを作成しその中身を見てみると関数定義の頭に?がついていました。これは,リンクできないことの問題があると思うのですがどうしたらいいのか分からず悩んでいます。何か分かることがあれば教えて下さい!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • BCBで作成したDLLを、VC++で静的リンクさせる方法

    BCBで作成したDLLを、VC++で静的リンクさせる方法 Borland C++ Builderで作成したDLLを、VC++アプリケーションで利用できるように LIBファイルに変換したいのですが、上手くいきません。 下記の手順を踏みました。 1. BCBでDLL作成   「VC++スタイルのDLL」で作成、   「VCLを使う」「CLXを使う」「マルチスレッドを使う」はチェックせず 2. コマンドラインで「IMPDEF.exe」を使用して、dllからdefファイル作成   (IMPDEF.exeは、\Borland\CBuilder6\Binに格納されていた) 3. コマンドラインで「LINK.exe」「LIB.exe」を使用して、defからlibファイル作成   (LINK.exeとLIB.exeは、\Microsoft Visual Studio\VC98\Binに格納されていた) 4. VC++プロジェクトファイルを保存したフォルダに、DLLファイルとlibファイルをコピー 5. VC++の「プロジェクト」-「設定」-「リンク」-「オブジェクト/ライブラリモジュール」に   作成したlibファイルを追加 VC++プロジェクトをビルドすると、下記のエラーメッセージが表示されます。 ///////////////////////////////////////////////////////////////////////////////// dllread.obj : error LNK2001: 外部シンボル "__imp__(関数名)@0" は未解決です LIBC.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Release/dllread.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー ///////////////////////////////////////////////////////////////////////////////// BCBとVC++のバージョンは、下記の通りです。 BCB Professional 6.0 VC++ 6.0 ちなみに、同じDLLを動的リンクで利用することは出来ました。 初心者の質問で申し訳ございませんが、解決策が分かる方がいらっしゃいましたら 教えていただけないでしょうか?

  • BCBでVC++のDLLを利用するために

    C++Builder5で、VC++で作ったDLLを利用する必要に駆られてしまいました。 提供されているのはDLL本体とヘッダの2点で、BCBからリンクするために、implibを使ってdllからlibの作成をし、プロジェクトに加え、ヘッダをインクルードしました。続けて試しにコードを書いたところ、 '外部シンボル_initialize_libraryが未解決' との表示。(initialize_libraryとはDLL内にある関数です。) 調べてみたところ、 1.呼び出し規約は標準で __stdcall 2.VC++ では、_ がシンボル名の頭に付く 3.Builder ではつかない これで食い違いが生じているんだと思うのですが、更に調べると、モジュール定義ファイルにて再定義をすれば良いとの結論になりました。 BorlandのFAQも見たのですが、書式が理解できなくて・・・そこで質問させて頂きたいのですが、単純にproject名.defを作って、 >IMPORTS >initialize_library=_initialize_library とやってプロジェクトに加えれば良いのでしょうか? ソース本体にextern "C" というのも必要なようですが、こちらの記述も教えて頂けたら嬉しいです。

  • C++言語でのライブラリファイルの作成と使用法

    よろしくお願いします。 C言語において、例えばMinGWのCコンパイラのLibディレクトリには、拡張子が「.a」のライブラリファイルがたくさん存在しています。これらは、arコマンドで ar crv libMine.a 1.o 2.o のように作成されるものだと認識しています。 一方、C++言語において、例えばBorlandのC++コンパイラのLibディレクトリには、拡張子が「.lib」というライブラリファイルがたくさん存在します。 これらのファイブラリファイルは、C言語のaファイルと同じ役割をする考えてよいのでしょうか? また、C++において自作のライブラリファイル(libファイル)を作成するにはどうすればよいのでしょうか? 次に、C++における自作ライブラリの使用法についてですが、Cではコンパイル時に gcc -o 1.exe 1.c libMine.a のようにして、自作のライブラリファイルを使うことができますが C++のコンパイルコマンド、例えばbcc32コマンドを使ってコンパイルする時に、 自分が作成したlibファイルを使うにはどのようにすればよいのでしょうか? 最後に、Borland C++コンパイラをインストールするときに、Binディレクトリにあるbcc.cfgファイルに -L"c:\Borland\Bcc55\lib" と記述したのですが、これは、 c:\Borland\Bcc55\libにあるlibファイルをコンパイル時に自動的に読み込むということなのでしょうか?

  • Math Kernel (マスカーネル) Library について

    Borland C++ Builderで数値解析コードを作成しているのですが、計算速度を上げるために演算用ライブラリを使おうと考えています。Intel製のマスカーネルライブラリを使いたいのですが、これまで慣れ親しんで使ってきたBorland C++ Builderからは利用できずに困っています。利用できるか否か、また可能な場合は利用手順をご教示頂けると助かります。

  • C++BuilderやDelphiでVC++用のDLLの作成

    C++Builderの画面から新規作成からDLLウィザードを選ぶと、VC++スタイルのDLLを選択して作成できるようになっています。VC++用のDLLを作成出来るとは書かれていません。実際、VC++コンパイラからリンクを拒否されます。 また、VC++用のインポートライブラリをCOFF形式からBorland用のOMF形式に変換するユーティリティCOFF2OMF)は存在していますが、OMF形式をCOFF形式に変換する手法を見かけません。 変換方法を書いているWEBや雑誌記事とかを紹介してください。

  • 無知な私に教えて下さい。

    Borland C++の設定なのですが・・・ 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブとフォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Libパスのリンカオプションを設定するものです。ファイルには次の行を含めてください。 -L"c:\Borland\Bcc55\lib" と、あるのですが意味が全くわからないんです・・・ この意味、もしくは設定の仕方をおしえてください。 m(_ _)m宜しくお願い致します。

  • LARGEARDDRESSAWAREオプション

    VC++のリンカオプションにLARGEARDDRESSAWAREというオプションがありますがBorland C++Builder5又は6にはないのでしょうか? また、このオプションをつけて作成したアプリケーションを有効にするためにはWindowsをどのように起動すればよいのでしょうか? どうか宜しくお願いします。

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • Borlandの無償配布のCコンパイラの初期設定

    ダウンロードしてきたやつを実行させて無事にディレクトリはできたのですが、以下の手順2のところのパスに追加しろ、というのがどういうことなのか分かりません。何をやればいいのか教えて下さい。 今までLinuxの既存のgccという温室で作業していたので、いざWindows上でCを動かしたいときに何をやればいいのかわかりません。助けてください ============================================================= 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"

  • ボーランドのフリーソフトの使い方について

    ボーランドのフリーソフトの使い方について知りたいです。インストールは出来ました。(一応) 以下が説明書です。 コマンドラインツールのインストールと実行 ----------------------------------------------- 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib" 2のaまでは出来ました。bとcが何を言っているのかわかりません。どなたか教えてください。