四川科技館 智慧控制 物聯網 AI 資料採集 智慧控制(JNative、skycto JEEditor)

書寫人生發表於2019-09-09

四川科技館智慧控制Java物聯網AI開發

1.分清楚System.load與System.loadLibrary

System.load
//System.load 引數必須為庫檔案的絕對路徑,可以是任意路徑,例如:
 System.load("C:\\Documents and Settings\\TestJNI.dll"); //Windows
 System.load("/usr/lib/TestJNI.so"); //LinuxSystem.loadLibrary
//System.loadLibrary 引數為庫檔名,不包含庫檔案的副檔名。
 System.loadLibrary ("TestJNI"); //載入Windows下的TestJNI.dll本地庫
 System.loadLibrary ("TestJNI"); //載入Linux下的libTestJNI.so本地庫
 //注意:TestJNI.dll 或 libTestJNI.so 必須是在JVM屬性java.library.path所指向的路徑中。1231234
   

2.以上為原理(都不好使!!!)

GlobalFunction.getSingleton().loadJNILibrary("zlprint");loadJNILibrary
 這個方法是自動從classpath或者jar包中尋找 zlprint.dll 或者 zlprint.so(具體根據OS系統平臺決定)
 重複載入相同的dll會報錯哦!
 loadJNILibrary要區分x86和x64,假設你有相同的兩個zlprint.dll,請在前面加上目錄限定名稱,比如:windows-x86_64/zlprint12
   

3.JavaCPP的坑

執行這些命令列的時候需要在Visual Studio 20XX的命令提示符下執行
$ javac -cp javacpp.jar NativeLibrary.java
$ java -jar javacpp.jar NativeLibrary
$ java  -cp javacpp.jar NativeLibrary
因為最後一行命令會呼叫VS的執行環境編譯器cl.exe,不是在Visual Studio x64 Win64 Command Prompt (2010)命令中執行就找不到這玩意兒!
如果你寫的xxx.java檔案中包含了package資訊,編譯的時候應該把xxx.class檔案放在package目錄下才能夠編譯(這是java常識)
JavaCPP中的註解annotation都是針對c++檔案生成而言,跟java檔案本身沒有任何毛關係!
作用是為了配置生成的cpp程式碼而存在
@Platform(include=“PrintLib.h”,link =“D:/javacpp-bin/zlprint”)
標頭檔案包含可以這樣:include={“PrintLib.h”,“string.h”}

   

4.資料採集與智慧控制

書寫人生智慧照明系統
四川科技館智慧控制
   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947338/viewspace-2656510/,如需轉載,請註明出處,否則將追究法律責任。

相關文章