我正在Delphi 7中開發JNI DLL文件。生成的文件將是32位DLL,不適用於64位Java VM。目標文件的64位鏈接
Delphi 7有可能生成c或C++目標文件。是否有可能通過第三方鏈接器從這些對象文件創建一個64位DLL?
我正在Delphi 7中開發JNI DLL文件。生成的文件將是32位DLL,不適用於64位Java VM。目標文件的64位鏈接
Delphi 7有可能生成c或C++目標文件。是否有可能通過第三方鏈接器從這些對象文件創建一個64位DLL?
Delphi編譯器發出32位目標代碼。無論您如何分片,無法將代碼鏈接到64位模塊中。
目前最好的選擇是使用FreePascal這可以產生64位的DLL。有一個即將到來的64位版本的德爾福,但它的發佈日期是未知的。
另一種選擇是強制使用32位版本的JVM(如果可能的話)。
除了簡單地使用64位指令之外,64位代碼與32位代碼是非常不同的。 MS在參數傳遞,堆棧數據和對齊等方面引入了更嚴格的規則。真的沒有辦法在64位DLL中包含32位代碼(由於這也禁止從64位調用32位代碼,反之亦然,但使用特定技術)。你必須等待Delphi 64位編譯器(並希望它的第一個版本足夠好),或者看看別處。無論如何,Delphi 7已經過時了。
謝謝!我知道它已經過時了,但我正在訂閱關於這個組件的「如果沒有破解不修復」的方法。 – vbence
@vbence如果您不想更改Pascal代碼,則使用32位JVM –
如果您不介意更改您的delphi代碼如何與Java代碼進行對話,也許您可以在它們之間創建網絡接口,並將Delphi代碼放入自己的REST服務器中,該服務器作爲CGI進程運行。然後,您可以輕鬆地將32位代碼與64位Java代碼交談,因爲它們處於不同的進程中,並且只能通過套接字連接。 –