2011-12-21 16 views
2

私はlibファイル用のAPIを手に入れました。 そのlibファイルの.hファイルが提供されました。 私はDelphi内のlibファイルを呼び出し、その機能を使いたいと思っています。は、delphiでlibファイルを使用します。 libファイルをインポートする方法

libファイルはどのようにしてDelphiに接続されますか?

アップデート:大丈夫ですか?大丈夫ですか? Delphiにリンクするにはどうしたらいいですか?

答えて

5

DelphiからDLLにリンクするためにlibファイルを使用することはできません。 .libファイルは、DLLのCまたはC++クライアントによって使用されます。

Delphiでは、externalキーワードを使用して、.hヘッダーファイルをパスカルインポートユニットに手動で変換する必要があります。 Delphiソース内のWindows.pasユニットの例です。実際には.libファイルを使用できないということは大きな問題ではありません。なぜなら.hファイルを何か翻訳しなければならないからです。

+1

この回答は、コンパイルされたDLLファイルが関連するLIBファイルで使用可能であることを前提にしています。実際には、何かをLIBファイルまたはDLLファイルとしてコンパイルすることは可能です。 DLLファイルが利用可能な場合、関連するヘッダーファイル(.H)を変換するだけで十分です。ただし、コードがLIBファイルでのみ使用可能になっている場合、Delphiでソースを使用するには、ソースをDelphi(使用可能な場合)に完全に変換する必要があります。それは、Delphiが.LIBをサポートしていないことは残念ですが、他の多くのコンパイラがかなりの時間サポートしています。 – Glenn1234

+0

@glenを静的なlibにリンクするには、libをCコンパイラのDLLにリンクするだけです。 –

+0

@David:Afaikはシンボルをエクスポートフラグで宣言しないため、表示されません。 –

0

特定のケースでは、Agner Fog(http://www.agner.org/optimize/?e=0,34,36参照)から.objファイルへのオブジェクトファイルコンバータのようなツールを使用して、.libファイルのメンバーを抽出することができます。

構文は

がobjconv.exe libname.lib -lx

は、すべてのメンバーを抽出することです。

すべてのメンバーを抽出することで、欠落しているメンバーがないことを保証できます。ただし、(.libファイルに)他の依存関係がある場合、これらは解決されず、手動で解決する必要があります。

ヘッダーファイルの翻訳も必要です。

注:オブジェクトファイル形式も変換できます。デルファイはOMFだけを理解していますが、インテルのコンパイラ(exampl用)はCOFFだけを吐き出しています。したがって、変換が必要であり、変換もツールで行うことができます。

これは、特定のケースでのみ機能し、コンパイラはエラーメッセージ(多くの場合、メッセージは刺激的で誤解を招くことが多い)にあまり役に立たないため、この分野で専門知識が必要です。

関連する問題