1. 程式人生 > >JNA呼叫dll\so檔案的路徑問題和測試樣例。

JNA呼叫dll\so檔案的路徑問題和測試樣例。

關於jda呼叫dll的路徑問題和測試樣例
本文主要幾點內容如下:
    1.jda具體的放置路徑
    2.jdk切換
    3.測試程式碼

    此文就是便於自己以後回顧使用,所以就不羅嗦jda和jdi直接的區別了。
    我在使用jda的時候,也是按照網上的教程做測試,但是不管怎麼放置我的dll都是不能載入此模組的問題。(有些教程感覺很坑)費了好大的功夫最後查到存在以下的問題:

    1.看看自己使用的jdk和dll是32位的還是64位的。這個一定要對照好。然後只要將自己的dll放置在專案的根目錄下即可。

    2.dll的問題,因為dll是別人編寫的。起先我也沒在意這個。後來最測試我自己生成的Demo是用codeblocks生成的。並且將
修改成就可以。
        但是codeblocks生成64位的dll我還沒弄明白(不知道怎麼調配置)。所以我的測試程式碼是32位的dll。
        單用64位的就不會再報找不到指定模組的錯誤,只會報找不到指定函式的錯誤。如果誰知道codeblocks生成64位dll的配置,請告訴我下)

    3.再個問題就是本機安裝多個jdk互相切換的問題
        其實,一臺機子上可以按照多個不同版本的jdk,64位的當然可以按照32位的,但是反過來肯定不行的。
        這樣就牽涉到一個切換jdk的問題。我用的是myeclipse,在這個ide是這樣切換的,如下:
        你只要配置了這個環境變數,就不用像配置cmd視窗那樣配置了。IDE可以自動識別這個路徑的。    

    4.我將所有我搜集的資源都上傳到我的csdn上,有測試程式碼,有jda.jar檔案。(收取2分的下載分,嘿嘿);

    ps:jda的壓縮檔案下有兩個jar包,另一個是platform-3.5.1.jar這個包讓你報錯的時候不顯示亂碼。

        我的資源有mht格式的,建議用firefox開啟,但是前提要按照mht外掛:如圖

資源地址:http://download.csdn.net/detail/hxn_fight/8468845

javaweb下dll的放置路徑:

追加一個其他人的連結:http://blog.sina.com.cn/s/blog_9075354e0101kq5f.html

---------------------------------------------------------------------------------------補充linux下的呼叫方法------------------------------------------------------------------

window上的測試通過了,但是當將專案移到linux下問題就又出現了。

問題:

1.在linux下作的demo是從自己寫的main函式啟動的沒什麼問題。(注意jdk的位數)

2..可是當我整個專案釋出的時候JNA相關程式碼就不起作用了。安裝網上放在各個目錄都不行,例如:/usr/lib   /lib 等等都不行。   System.out.println(System.getProperty("java.library.path"));中的目錄試了也不行。

方案:

1.linux下的動態庫編譯我就不多說了。最關鍵的問題在於so檔案的放置路徑。

2.最終發現自己的用的jdk是64位的,所以我將我的so檔案放在了/usr/lib64/下就可以了。

3.另一種方法就是在載入動態庫的時候,寫絕對路徑。

4.至於修改/etc/profile 中的配置。親測不用修改也行。

PS:將自己的心得記錄在一方面供自己以後檢視,一方面希望也能幫助遇到相同問題的朋友。linux的測試樣例就不上傳了。