2011-08-11 5 views
0

私のLazarusコードで 'ANN'ライブラリ(Approximate Nearest Neighbor)の関数を使用したいと思います。このアプリケーションはC++で書かれており、ソースコードが付属しています。 Lazarus/FreePascalから関数にアクセスするにはどうすればよいですか?C++で定義された関数の使用方法 - Lazarus(freepascal)内で生成された.dllファイルまたは.libファイル?

編集:Lazarus/FPCはDelphiに似ています。

+0

バンプ(下の更新された回答を参照)(QTリファレンス) –

答えて

1

ライブラリによって異なります。それがC++の "C"サブセットである場合、またはインタフェースが特別に相互運用可能に作られている場合は、opc0deの答えを参照してください。この場合の重要な信号は、 "extern C {}"ブロックです。

ライブラリが, C++の場合、問題があります。 C++の普遍的なエクスポートメカニズムはなく、一般に2つの異なるC++コンパイラでも互いに理解できません。

これを使用するには、ラッパーと呼ばれるものを作成する必要があります。 C++固有のすべてをラップし、プレーンC関数(extern C {})のみをエクスポートする/ same/C++コンパイラでコンパイルされたコード一例として、QTをラップするいわゆるQTPASラッパーを見てみましょうFree Pascal/Delphiでの使用に適しています。

1

あなたはDLLから関数をインポートしたい場合は、C++ライブラリを使用CDECLである場合、これらは、パラメータの受け渡し規則を表す窓ライブラリの利用STDCALL

ある場合は、この

function ExportedFunctionName(parameters):ResultType;cdecl;external 'library.dll'; 

を行うことができます

関連する問題