通過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
- vue中對axios進行封裝VueiOS封裝
- python中的pip的安裝以及通過pip命令對selenium進行解除安裝和安裝Python
- 封裝axios請求並對提交引數進行校驗封裝iOS
- 通過串列埠進行通訊 :串列埠
- 小程式API進行promise封裝APIPromise封裝
- react中進一步封裝axios,對錯誤資訊進行攔截React封裝iOS
- C++使用libcurl進行http通訊C++HTTP
- 通過qq進行ip定位
- 如何使用SHC對Shell指令碼進行封裝和原始碼隱藏指令碼封裝原始碼
- NetNORAD:通過端到端探測對網路進行故障排除
- 于振:如何通過倉儲,對實體進行持久化處理?持久化
- 如何通過CRM進行遠端支援?
- 歐盟議會投票通過對加密貨幣進行更密切監管加密
- 筆記六:通過 Analyzer 進行分詞筆記分詞
- 通過 Spring 框架如何進行JDBC操作呢?Spring框架JDBC
- 通過進攻心態進行有效的網路防禦
- 分享幾種 Java8 中通過 Stream 對列表進行去重的方法Java
- [Flutter翻譯]通過重新編譯Flutter引擎對Flutter應用進行逆向工程。Flutter編譯
- 使用Python ftplib庫進行封裝FTP自動下載PythonFTP封裝
- 封裝一個postMessage庫,進行iframe跨域互動封裝跨域
- 通過nginx進行udp報文負載均衡NginxUDP負載
- ES 筆記六:通過 Analyzer 進行分詞筆記分詞
- 聊聊redisTemplate對lettuce的封裝Redis封裝
- 通過Handler封裝的網路請求資料的工具類NetUtils封裝
- C++第二季--02(C++資料封裝)C++封裝
- 模仿sklearn進行機器學習演算法的封裝機器學習演算法封裝
- python-進階教程-通過公共鍵對字典列表排序Python排序
- win10通過映象檔案進行升級Win10
- GaussDB(for MySQL) :Partial Result Cache,通過快取中間結果對運算元進行加速MySql快取
- C++ 用libcurl庫進行http通訊網路程式設計C++HTTP程式設計
- PHP 對資料進行驗證和過濾PHP
- vue-cli 3.0 + 對 axios 封裝VueiOS封裝
- go對get、post請求封裝Go封裝
- C/C++ Zlib庫封裝MyZip壓縮類C++封裝
- 使用C++/CLI呼叫C#封裝類庫C++C#封裝
- Java安全之JNI繞過RASPJava
- Ajax概述,封裝以及聯合模板引擎進行資料互動封裝