以下是個人遇到的問題和個人的想法
之前在操作JNI調用C#所製的DLL函數時,JAVA程式每次執行一個函式會去讀取某個值在此稱A值。A值其實是C++寫出來的套件A指向一個記憶體位置。但是每次執行結果都會失敗,後來DEBUG發現每次執行時A值都不一樣(理論上A值是個全域變數,數值應該不會變動。)估計應該是JVM沒辦法處理或辨識某些DLL的執行緒狀態。而配置給A一個新的值。
最後解決方法是我把在C#的A值宣告成靜態全域變數static後重新製作DLL,就可以正常執行。應該是因static是在程式初始化時就被建立而且不能隨意更改。簡單來講配置記憶體的區域不同。


JAVA有哪些配置記憶體的區域可以參考以下連結:
http://ajava.org/blog-273-217.html
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()