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;
}