通過JNI對C++進行封裝
對目前的進展做一下記錄
Windows下的C++庫移植出現了眾多問題,其中最為棘手的就是Windows下的微軟C++函式庫的處理,由於產品部門早期並沒有考慮到國產化程式碼移植這一塊,所以在程式碼中使用了眾多的微軟C++庫,目前遇到的兩座大山分別是Windows下的OleAuto.dll和conutil.dll,這兩個庫必須在Linux下自行實現,目前沒有比較合適的技術路線可以選擇,只能硬著頭皮上,後續會更新這兩個庫的升級進展
目前web端需要的是Java介面,我們採用了JNI來進行C++層面的封裝,技術路線已經走通,後續會上傳最新的程式碼以供學習使用,這裡整理遇到的兩個致命問題
1.找不到C++庫,問題描述為”no xxx in java.library.path“
解決方案簡單粗暴,把生成的so放在java.library.path所包含的路徑下即可,由於工程程式碼編譯之後生成的庫較多,因此需要修改java.library.path中的路徑,目前沒有合適的技術方案可以實施,可以通過Java程式碼對java.library.path進行輸出檢視java.library.path所包含的路徑,其中一個是/usr/lib/,我也是把so放在了這裡
2.找不到本地函式,問題描述為”no xxx V“
解決方案為
Java中System.loadLibrary(”libraryName“)中的libraryName為JNI程式碼生成的so庫,並非底層C++程式碼庫,因此找不到本地函式的實現也是情理之中,後續會上傳程式碼
提一下這邊的總體路線:
C++底層函式庫->JNI層函式庫->Java層函式庫->上傳到伺服器生成Web端微服務->供Web端進行呼叫
小組遇到的技術難點為微軟C++函式庫編譯(需要自行實現)、JNI層封裝(下週會進行講座進行新技能彙報)
以上
相關文章
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 通過JVMTI和JNI對JAVA加密JVMJava加密
- vue中對axios進行封裝VueiOS封裝
- 對AlamofireObjectMapper進行二次封裝ObjectAPP封裝
- android實現app通過jni呼叫C/C++方法AndroidAPPC++
- Mac下安裝NDK,進行JNI開發Mac
- Android 對 Adapter 的 ItemType 進行封裝簡化AndroidAPT封裝
- adb通過WiFi對手機進行除錯WiFi除錯
- 通過串列埠進行通訊 :串列埠
- 小程式API進行promise封裝APIPromise封裝
- 封裝axios請求並對提交引數進行校驗封裝iOS
- 對Volley框架的一些介面進行封裝:VolleyAir框架封裝AI
- 【菜鳥學Java】14:使用ThreadLocal對Connection進行封裝Javathread封裝
- react中進一步封裝axios,對錯誤資訊進行攔截React封裝iOS
- 通過qq進行ip定位
- python中的pip的安裝以及通過pip命令對selenium進行解除安裝和安裝Python
- 對MFC封裝Windows通訊API的研究 (轉)封裝WindowsAPI
- 如何使用SHC對Shell指令碼進行封裝和原始碼隱藏指令碼封裝原始碼
- C++使用libcurl進行http通訊C++HTTP
- C++ 封裝互斥物件C++封裝物件
- 通過 HTTP 頭進行 SQL 注入HTTPSQL
- Android 通過JNI實現守護程式Android
- 如何通過rownum對錶的不同範圍進行批量更新update
- 通過SQL Server對上傳檔案內容進行查詢SQLServer
- 通過dom4j對xml文件的讀取操作工具類封裝XML封裝
- 于振:如何通過倉儲,對實體進行持久化處理?持久化
- 歐盟議會投票通過對加密貨幣進行更密切監管加密
- 如何通過CRM進行遠端支援?
- GO解析PHP通過PHPCGI進行渲染GoPHP
- 通過分割槽進行優化(轉)優化
- 通過ADDM進行SQL調優SQL
- oracle 通過statspace 進行效能調優Oracle
- 模仿sklearn進行機器學習演算法的封裝機器學習演算法封裝
- C#實現通過Gzip來對資料進行壓縮和解壓C#
- NetNORAD:通過端到端探測對網路進行故障排除
- C++中對檔案進行讀寫操作C++
- 筆記六:通過 Analyzer 進行分詞筆記分詞
- WebService通過SOAP頭進行身份驗證Web