我正在开发Delphi 7中的JNI DLL文件。生成的文件将是32位DLL,不能在64位Java VM上运行。
Delphi 7可以生成 c 或 c ++ 目标文件。是否可以使用第三方链接器从这些目标文件创建64位DLL?
答案 0 :(得分:9)
Delphi编译器发出32位目标代码。无论您如何对其进行切片,该代码都无法链接到64位模块。
目前,最好的办法是使用可生成64位DLL的FreePascal。有一个即将推出的64位版本的Delphi,但它的发布日期未知。
另一种选择是强制使用32位版本的JVM(如果可能的话)。
答案 1 :(得分:3)
没有。除了简单地使用64位指令之外,64位代码与32位代码非常不同。 MS在参数传递,堆栈数据和对齐等方面引入了更为严格的规则。真的没办法在64位DLL中包含32位代码(并且由于这也禁止从64位代码调用32位代码,反之亦然,但使用特定技术)。你必须等待Delphi 64位编译器(并希望它的第一个版本足够好),或者寻找其他地方。无论如何,Delphi 7已经过时了。