![](/img/trans.png)
[英]JNI - Listener in C++/Java - is it possible to instantiate Java objects in c++ and use them as parameters
[英]How to create Apache Arrow vectors in Java, pass them to C++ code through JNI, read/write them in C++
我一直在閱讀 Apache Arrow 文檔,我已經弄清楚如何在 Java 和 C++ 中使用它。但我想做的是將一些工作從 Java 卸載到 JNI (C/C++) 代碼,以及文檔(例如https://arrow.apache.org/docs/java/cdata.html )似乎沒有涵蓋我的用例,示例中的方法(例如 IntVector 上的 getMemoryAddress)似乎不存在就像他們在示例中所做的那樣。 我想從簡單開始,所以這就是我想做的:
任何人都可以指出一個例子或一些關於如何做到這一點的技巧嗎?
順便說一句,示例還使用 JavaCPP 而不是 JNI。 但是我在這個項目中已經有了一堆 JNI 代碼,如果沒有必要,我寧願不混入另一種橋接。
謝謝。
我嘗試在 Java 中分配 IntVector 對象,但我不知道我必須檢索哪些朴素指針才能傳遞給 C++ 以提供對這些向量的正確訪問。
JavaCPP 只是為了方便示例,JNI 就可以了。
C數據接口還是你想要的。 當您說“獲取我需要的任何本機指針”時:這正是 C 數據接口中的struct ArrowArray
。 使用 Java 中的 C 數據接口模塊導出您的 Java arrays 並獲取struct ArrowArray
的地址,然后將該地址通過 JNI 傳遞給您的 C++ 代碼。 然后,使用 libarrow 的 C 數據接口實現導入 arrays 並使用它們。
當 C++ 端完成后,它做同樣的事情:它導出結果向量並通過 JNI 返回一個地址到 Java; 然后 Java 代碼從該地址導入向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.