簡體   English   中英

使用JNI Java類的DLL

[英]DLL using JNI Java classes

我正在寫一個C ++ dll(Visual Studio中的文件擴展名是.cpp,但代碼是C),它使用JNI加載和調用某些Java類的實例方法。 結果,我的項目由C ++源文件和頭文件以及一些Java類文件(通過JNI使用的Java對象的類文件)組成。 我想創建一個單一的dll庫,其中還包括“單個捆綁包”中的Java類文件。 是否可以將C和Java文件都放入dll?

這完全有可能,盡管不一定直觀。 我還沒有測試過,但是我想如果您知道自己在做什么,它將很容易工作。

首先,您將需要一種將類文件的二進制文件打包到您擁有的本機二進制文件中的方法,然后當然可以在任何時間點無縫讀取該塊。 如何實現這取決於您,沒有真正的“正確方法”來做到這一點。

話雖如此,如果您可以獲取.class文件數據所駐留的內存的句柄(在加載DLL之后),並將其作為byte[]ByteBuffer傳遞給Java,那么您將想要使用ClassLoader任何一個的defineClass重載以及對findLoadedClass的調用,然后是對loadClass的調用。

這將使您幾乎可以從任何數據源加載類。 如前所述,如何存儲/檢索該類的本機數據由您決定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM