第一步:運(yùn)行撼了蹋康威視官方提供的SDK
第二步:編譯需要調(diào)用的C程序?yàn)榭蛇\(yùn)行程序
我們使用的Alarmxxx程序悦污,在idea中運(yùn)行铸屉。需要配置攝像頭ip及交換機(jī)(同一個(gè)IP段),以便連接程序運(yùn)行切端。
第三步:JNA調(diào)用可運(yùn)行程序
JNA(Java Native Access )提供一組Java工具類用于在運(yùn)行期間動(dòng)態(tài)訪問系統(tǒng)本地庫(kù)(native library:如Window的dll)而不需要編寫任何Native/JNI代碼抬探。開發(fā)人員只要在一個(gè)[java接口]中描述目標(biāo)native library的函數(shù)與結(jié)構(gòu),JNA將自動(dòng)實(shí)現(xiàn)Java接口到native function的映射帆赢。
- dll和so是C函數(shù)的集合和容器小压,這與Java中的接口概念吻合,所以JNA把dll文件和so文件看成一個(gè)個(gè)接口椰于。在JNA中定義一個(gè)接口就是相當(dāng)于了定義一個(gè)DLL/SO文件的描述文件怠益,該接口代表了動(dòng)態(tài)鏈接庫(kù)中發(fā)布的所有函數(shù)。而且,對(duì)于程序不需要的函數(shù),可以不在接口中聲明复哆。
- JNA定義的接口一般繼承com.sun.jna.Library接口鼎兽,如果dll文件中的函數(shù)是以stdcall方式輸出函數(shù),那么睦尽,該接口就應(yīng)該繼承com.sun.jna.win32.StdCallLibrary接口。
- Jna難點(diǎn):編程語(yǔ)言之間的數(shù)據(jù)類型不一致。
JNA模擬結(jié)構(gòu)體抱虐,使用JNA將C語(yǔ)言的結(jié)構(gòu)體翻譯成Java可以對(duì)象模型。
饥脑、恳邀、、
這個(gè)各位看官需要自己努力了灶轰。
谣沸、、笋颤、
JNA的使用
第四步:打包發(fā)布
使用jar包發(fā)布乳附,配置文件隨jar包一起,可以更改數(shù)據(jù)庫(kù)連接的配置伴澄。
碰見問題:
- jar包讀取配置文件路徑問題(絕對(duì)路徑與相對(duì)路徑)赋除;
- 數(shù)據(jù)庫(kù)連接優(yōu)化(插入優(yōu)化,連接優(yōu)化)秉版;