2017-03-17 16 views
2

私はdelphi xe3でc objファイルを使用したいと思います。私は `_exit`c関数をdelphiで実装できますか?

OBJファイルをリンクすると、このエラーを示しています

`[dcc32 Error] Unit1.pas(149): E2065 Unsatisfied forward or external declaration: '_exit'` 

私は_exit機能を実装することができますか?

+0

どうすればいいですか? 'procdure _exit(const Status:Integer); cdecl; external 'msvcrt.dll' name 'exit'; '' _exit() '、' exit() '、' _Exit() 'があることに注意してください:https://msdn.microsoft.com/en-us/ライブラリ/ 6wdz5232.aspx – alk

答えて

1

はい、実際にこれを行うことができます。通常は、.objファイルをプロジェクト内の1つのユニットにリンクします。そのユニットにexit関数を実装し、Delphiリンカーがそれを見つけます。

.... 

implementation 

.... 

{$LINK foo.obj} 

procedure _exit(status: Integer); cdecl; 
begin 
    // your implementation goes here 
end; 

これまで説明したように、この機能はユニットの実装セクションに配置されています。ユニットの外部から見える必要はありません。

Cオブジェクトにリンクする複数の異なるユニットがある場合は、exitのようなCランタイム関数を1つのユニットに配置し、Cオブジェクトにリンクする他のユニットのユニットを使用することができます。そのシナリオでは、リンカが関数を見ることができるように、各関数をインタフェースセクションに公開する必要があります。

関連する問題