2009-07-01 29 views
0

私はBorland C++ 6でアプリケーションをビルドしています。ボーランド以外のライブラリ(FFTW、正確にはhttp://www.fftw.org)をインポートしたいと思います。外部DLLライブラリをBorland C++ 6にインポートするには?

私はfftw dllファイルをダウンロードし、implib.exeプログラムを使用してBorlandに知られているlibファイルをビルドし、fftw.hをソースに、fftw.hをBorland/includeに、fftw.libをBorland/libにコピーしました.h、.dll、.libファイルをプロジェクトフォルダにコピーします。

残念ながら、私は主張し、いくつかのリンカエラー、取得:私は何をしますか

{ソースファイルの名前}から参照

未解決の外部「{FFTW関数の名前を}」違う?

答えて

0

Borlandが外部関数の適切な名前変更を行っていることと、ヘッダーがextern "c" {}で囲まれていることを確認してください。 Borlandが実際に.libファイルにリンクしようとしていますか?コンパイラーに冗長オプションが設定されていることを確認してください。

これでうまくいかない場合は、DLLを使用する代わりにFFTWをソースからビルドしないのはなぜですか?

+0

extern "c"はどういう意味ですか? –

+0

Extern "c"はリンカーにCでコンパイルされた関数を探すように指示します。 C++コンパイラを使用しているため、リンカは間違った(変更された)関数名を探している可能性があります。 http://wiki.answers.com/Q/What_is_the_use_of_extern_in_C –

1

あなたのプロジェクトに作成された.libファイルを追加してください。

1

私はちょうど私はそれが仕事を得るために管理方法を似たような話から言っている...

デルファイ7、VB.NETおよびJavaで(sucessfullyインポートされた)働いたDLLがありました。 Borland C++ Builder 6でプログラムを作りたいと思っていました。関数プロトタイプとその言語でのインポートを行った正確な宣言がありました。合理的?

私はそれが簡単だと思っていましたが、私はうまくいかなかった多くの死んだ端にステップバイステップの "ブラインド"ガイドを貼り付けました。そして、IDEやコマンド出力もどちらも助けてくれません。 (DLLは、Visual C++ではありませんが、質問4599357から)私が試した数日後

  1. プロトタイプを持つせずに "IMPLIB" "-a" と
  2. を使用してこのように宣言:

にextern "C" __declspec(dllimportの)__stdcall int型someDll_someFunction(someTypes someArgs、...);

通常の関数プロトタイプは最後にあります。 "通常の"プロトタイプを持っている場合は、ソースコードまたはヘッダファイルの前に "extern" C "__declspec(dllimport)__stdcall"を追加してください。 :)そして、私は "int"を返す関数しか持たないので、これが "int"をそこに置く理由です。

関連する問題