簡體   English   中英

我應該如何通過Java將值中的unsigned int從Java傳遞並返回到C / C ++

[英]How should I pass and return unsigned int by value from Java to C/C++ in jna

我的C ++函數

extern "C" {
   DECLSPEC unsigned int STDCALL doNumberThing(unsigned int some_number);
}

我的Java介面

package com.myplace.nativeapi;

import com.sun.jna.Library;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;

interface NativeAPI extends Library {
    int doNumberThing(int some_number);
}

顯然,在處理僅對一種或另一種不匹配類型有效的值(int與unsigned int)時,這會產生問題。 建議的解決方法是什么? 其他地方的一個答案建議使用“ IntByReference”,但是除非我誤解了,否則他們談論的是long *,而不是按值傳遞的實際無符號int。

(這是精簡的示例代碼,如果存在語法錯誤,請在注釋中告知我,然后我將更新問題)

JNA提供了IntegerType該類可用於指示某些特定大小的無符號整數。 您必須long使用Java才能以原始形式保存本機unsigned int ,因為它的值可能不在Java int的范圍內,但是通常您可以傳遞IntegerType對象,並且僅在需要時才拉出原始值。

public class UnsignedInt extends IntegerType {
    public UnsignedInt() {
         super(4, true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM