JNA技術(shù)的簡單流程_C++方面
1 打開IDE

打開C++ IDE
2新建項目

選擇 創(chuàng)建新項目
3新建項目

選擇 具有導(dǎo)出項的(DLL)動態(tài)鏈接庫 并點擊 下一步,更改項目名(以下記為$N,以$N指代此處您創(chuàng)建的工程名,但請不要用$N作為工程名),點擊創(chuàng)建,記下您工程的位置
4:檢查先決條件
檢查界面中是否有解決方案資源管理器,沒有則在上方 視圖(V) 選項卡下 選擇 解決方案資源管理器(P)

4 打開 源文件
打開解決方案資源管理器中的 源文件 選項卡左側(cè)的三角形,

下方會顯示三個后綴為.cpp的文件

5打開文本編輯器,準備編輯$N.cpp
雙擊$N.cpp文件并打開

可以看見打開了文本編輯器

6在示例函數(shù)下方編寫需要導(dǎo)出的函數(shù)????

首先聲明函數(shù),仿照上方 $N_API 返回值類型 函數(shù)名(參數(shù)列表){
????????? ? 函數(shù)的具體實現(xiàn)
? ? ? ? ? ? ?return 返回值;
? ? ? ? ? }
返回值類型- C++中的數(shù)據(jù)類型,如int,bool等基本數(shù)據(jù)類型和 string等其他數(shù)據(jù)類型
函數(shù)名 一個符合標準的名字(見下),最好能表明函數(shù)用途
參數(shù)列表 包含 數(shù)據(jù)類型 變量名 , ..數(shù)據(jù)類型 變量名 , ....... 調(diào)用的時候需要指定這一數(shù)據(jù)的值,交給函數(shù)體處理.也就是 輸入 的值
返回值 最后交給函數(shù)調(diào)用者的數(shù)據(jù)
如,在$N為DLL的源文件中,編寫一個求和函數(shù),函數(shù)名為sum,參數(shù)列表int a 和 intt b ,返回值類型也為int,則應(yīng)當(dāng)如下

此函數(shù)包含了 聲明 DLL_APIint sum(int a,int b);兩部分和對它的定義兩部分
注意:請正確拼寫函數(shù)名,請不要使用非ASCII字符來命名函數(shù),請使用大駝峰(從第一個有效單詞開始,首字母 大寫 不大寫 大寫...),或小駝峰(同大駝峰,但首字母為 小寫 大寫 小寫...)命名較長的函數(shù).?
注意為了JNA技術(shù)的另一頭 Java ,您可能還需要查閱 JNA中 C++和Java的數(shù)據(jù)類型映射表

來減少復(fù)雜類型的使用,用更簡便的返回值和參數(shù)類型;最好為基本數(shù)據(jù)類型,避免不必要的麻煩
注意 在實際工作中,將"函數(shù)值"(即運算后得到的結(jié)果)打印的意義是不大的,原因如下
1:平常使用的cout(C++),System.out.println(Java)中,其實占用較多資源
2:只打印不返回,相當(dāng)于連貫的程序在此 斷了 ,下方程序無法知曉"運算"結(jié)果(返回值)
3:一般習(xí)慣將內(nèi)容打印到日志,而不是使用控制臺輸出,這樣做對debug有意義,但不大,缺少日志那樣的嚴格體系.
注意 請使用具體的數(shù)據(jù)類型 返回值類型 函數(shù)體 函數(shù)名等來替換上述和下述格式中的中文
因此,您應(yīng)當(dāng)將結(jié)果作為返回值進行返回,以此完成 C++和Java的混合編程
7 打開頭文件
選擇 頭文件選項卡左側(cè)的三角形,并且單擊此處

可以看見下方展開的三個.h頭文件

雙擊$N.h頭文件進入文本編輯器界面

8:編寫頭文件
找到頭文件文本的最后一行

單擊并編寫文本,格式為
extern "C" $N_API 返回值類型 函數(shù)名(參數(shù)列表);
(注:如 extern "C" DLL_API int sum(int a,int b); 條件在第五步中.)
您發(fā)現(xiàn)了嗎,在 extern "C" 后方的內(nèi)容和函數(shù)聲明是完全一致的,您只需要將您已經(jīng)在$N.cpp中寫好的函數(shù)的定義復(fù)制到此處,并加上分號即可
(extern "C"? 的作用 表明此函數(shù)在連接時按照C語言標準,而不是C++標準,解決函數(shù)意外重載和標準不同等問題)
如上述的sum函數(shù)應(yīng)當(dāng)寫

完成后,您就可以選擇上方選項卡中的 生成(B)?,選擇 生成解決方案(B) 并單擊了

稍作等待,如下方提示有錯誤,請仔細檢查是否有遺漏和其他錯誤.若顯示

則可以關(guān)閉IDE,找到此處

雙擊 ”x64“ 文件夾

雙擊”Debug“文件夾

然后找到后綴為.dll的動態(tài)鏈接庫文件即為 JNA技術(shù)所需的 C++代碼