Java通過JNI調用C庫時,引用(&)無法正確生效的解決辦法

                                                           Java通過JNI調用C庫時,引用(&)無法正確生效的解決辦法

1. 通過JNI來調用C庫

參考:https://blog.csdn.net/kraken5142709/article/details/20219945

2. 引用無法正確生效的問題

參考代碼

功能爲模擬消息隊列,只給出部分代碼作爲參考;

void Receive(void **msg) {

        *msg = msgQueen[0];

}

void MessageRcv(void * msg) {

         Receive((void **)&msg);

}

void main() {

        int a;

        MessageRcv(&a);

}

此段代碼在正常編譯C/C++時都可以正常編譯且功能正常;

但在通過JNI調用時如果按照這麼寫,則此時無法通過&來給a進行賦值;

需要將外層也轉換成**的格式

如下

void Receive(void **msg) {

        *msg = msgQueen[0];

}

void MessageRcv(void ** msg) {

         Receive(msg);

}

void main() {

        int a;

        int *pa;

        MessageRcv(&pa);

        a =  *pa;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章