1

我是 Java 程序员,正在研究 JNI。要生成有效的 DLL 文件,我需要在我的 Eclipse CDT 中添加 -Wl,--kill-at 链接器选项。但我不知道为什么我们需要 --kill-at 以及它是什么。

在网上搜索后,我从这个链接得到了以下详细信息。

但我没有正确理解它。有人可以详细解释一下吗?

--kill-at
If given, the stdcall suffixes (@nn) will be stripped from symbols before they are    exported.
[This option is specific to the i386 PE targeted port of the linker]
4

2 回答 2

1

在 Microsoft 系统(PE 可执行文件/DLL 格式)上,调用约定会stdcall生成格式为symbolname@number. 根据描述,即使它们使用调用约定,也会--kill-at导致从 DLL 导出的名称。symbolnamestdcall

于 2013-07-07T08:45:04.543 回答
1

默认情况下,__stdcall函数将有一个后缀,@其后跟函数期望的参数字节数,因此(例如)一个F接受 3 个参数,每个参数 4 字节的函数将获得一个名称(在目标文件中)F@12.

这个标志告诉链接器,当它创建一个 DLL 时,它不应该函数名上包含那些后缀——如果你给一个函数命名F,那么导出的名字应该只是F.

于 2013-07-07T08:45:53.297 回答