2017-03-17 114 views
2

我想在delphi xe3中使用c obj文件。我可以在delphi中實現`_exit`c函數嗎?

當鏈接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文件鏈接到項目中的單個單元。在該單元中實現exit函數,Delphi鏈接器將找到它。

.... 

implementation 

.... 

{$LINK foo.obj} 

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

正如我已經說明的那樣,您將函數放置在單元的實現部分。它不需要在設備外部可見。

您可能有多個鏈接到C對象的不同單元,在這種情況下,您可以將C運行時功能(如exit)放置在一個單元中,並使用鏈接到C對象的每個其他單元的單元。在這種情況下,你需要暴露接口部分中的每個函數,以便鏈接器可以看到該函數。

相關問題