我是java程序员,正在研究JNI。要生成有效的DLL文件,我需要在Eclipse CDT中添加-Wl, - kill-at链接器选项。但我不知道为什么我们需要--kill-at和它是什么。
在网上搜索后,我从this link.
获得了以下详细信息但我不理解它。任何人都能详细解释一下这个吗?
--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]
答案 0 :(得分:1)
在Microsoft系统(PE可执行文件/ DLL格式)上,调用约定stdcall
生成格式为symbolname@number
的错位符号。从描述中,--kill-at
导致从DLL导出的名称仅为symbolname
,即使它们使用stdcall
调用约定。
答案 1 :(得分:1)
默认情况下,__stdcall
函数的后缀由@
后跟函数所需的参数字节数组成,因此(例如)函数F
表示每个4个字节的3个参数将获得F@12
的名称(在目标文件中)。
此标志告诉链接器,当它创建DLL时,不应该在函数名称中包含这些后缀 - 如果你给了一个名为F
的函数,则导出名称应为F
。