2017-03-17 115 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对象的每个其他单元的单元。在这种情况下,你需要暴露接口部分中的每个函数,以便链接器可以看到该函数。

相关问题