[發明專利]基于JNI的C++中JAVA函數調用方法有效
| 申請號: | 201711336832.0 | 申請日: | 2017-12-14 |
| 公開(公告)號: | CN107832056B | 公開(公告)日: | 2020-12-18 |
| 發明(設計)人: | 李波 | 申請(專利權)人: | 蘇州蝸牛數字科技股份有限公司 |
| 主分類號: | G06F8/40 | 分類號: | G06F8/40 |
| 代理公司: | 北京德崇智捷知識產權代理有限公司 11467 | 代理人: | 王金雙 |
| 地址: | 215000 江蘇省*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 jni c++ java 函數 調用 方法 | ||
1.一種基于JNI的C++中JAVA函數調用方法,包括以下步驟:
使用C++可變參數模板和模板特化,實現編譯期JNI數據類型簽名的字符串值字面對象,并預置JNI支持的數據類型簽名,建立JNI接口;
使用C++可變參數模板和模板特化,實現編譯期JNI數據類型簽名的字符串值字面對象,進一步包括,使用C++模板實現模板遞歸和特化,生成保存JNI數據類型簽名的字符串值字面對象;
調用JAVA函數后,使用C++可變參數模板和模板特化實現C++、JNI之間的數據類型轉換和生成函數簽名;
所述使用C++可變參數模板和模板特化實現C++、JNI之間的數據類型自動轉換的步驟,進一步包括,
通過C++模板元編程特化出C++數據類型到JNI數據的映射關系和轉換函數;
通過C++模板元編程特化出JNI數據類型到C++數據類型的映射關系和轉換函數;
通過C++模板元編程特化出C++數組類型到JNI數組類型的轉換函數;
通過C++可變參數模板特性和模板特化實現C++與JNI不定參數函數的調用;
所述生成函數簽名,進一步包括,在調用JAVA方法時,傳入JAVA的類路徑,方法名,以及參數,所述參數類型為C++類型;根據參數的個數和類型推導出參數簽名,根據返回值類型推導出返回值簽名;然后通過參數簽名和返回值簽名組成了函數簽名;
通過函數簽名調用JNI接口查找JAVA函數;
找到JAVA函數后,使用C++可變參數模板和模板特化實現C++到JNI的數據類型轉換,使用轉換過后的JNI的數據類型進行JAVA函數調用;
進行函數執行結果從JNI數據類型轉換為C++數據類型,最終返回結果。
2.根據權利要求1所述的基于JNI的C++中JAVA函數調用方法,其特征在于,所述實現編譯期JNI數據類型簽名的字符串值字面對象的步驟,包括,利用C++可變參數模板的特性以及模板特化特性實現模板遞歸,每一層遞歸保存一個靜態字符,最終整套遞歸就是一個完整的字符串值字面對象;通過編譯期字符串值字面對象預置JNI數據類型簽名,以供通過C++對象映射JNI對象。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于蘇州蝸牛數字科技股份有限公司,未經蘇州蝸牛數字科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711336832.0/1.html,轉載請聲明來源鉆瓜專利網。





