目标文件的 64 位链接
我正在 Delphi 7 中开发 JNI DLL 文件。生成的文件将是 32 位 DLL,它不能在 64 位 Java VM 上运行。
Delphi 7 可以生成c 或c++ 目标文件。是否可以使用第三方链接器从这些目标文件创建 64 位 DLL?
I am developing JNI DLL files in Delphi 7. The resulting files will be 32 bit DLLs, which do not work on a 64bit Java VM.
Delphi 7 has the possibility to generate c or c++ object files. Is it possible to create a 64bit DLL from these object files with a third party linker?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Delphi 编译器生成 32 位目标代码。无论您如何对其进行切片,该代码都无法链接到 64 位模块中。
目前,您最好的选择是使用可以生成 64 位 DLL 的 FreePascal。 Delphi 即将推出 64 位版本,但发布日期未知。
另一种选择是强制使用 32 位版本的 JVM(如果您可以的话)。
The Delphi compiler emits 32 bit object code. It doesn't matter how you slice it, that code cannot be linked into a 64 bit module.
At the moment your best bet is to use FreePascal which can produce 64 bit DLLs. There is an upcoming 64 bit version of Delphi but its release date is unknown.
Another option would be to enforce the use of the 32 bit version of the JVM, if that is possible for you.
64 位代码与 32 位代码有很大不同,不仅仅是简单地使用 64 位指令。 MS在参数传递、堆栈数据和对齐等方面引入了更严格的规则。确实没有办法在 64 位 DLL 中包含 32 位代码(因此也禁止从 64 位 DLL 调用 32 位代码,反之亦然,但需要使用特定技术)。您必须等待 Delphi 64 位编译器(并希望它的第一个版本足够好),或者寻找其他地方。无论如何,Delphi 7 已经过时了。
No. 64 bit code is very different from 32 bit code, beyond simply using 64 bit instructions. MS introduced much stricter rules in parameter passing, stack data and alignment and so on. Really no way to include 32 bit code in a 64 bit DLL (and due to this is forbidden too to call 32 bit code from 64 bit one, and viceversa, but using specific techniques). You have to wait for the Delphi 64 bit compiler (and hope its first release is good enough), or look elsewhere. Delphi 7 is getting outdated anyway.