0
我有下面的C++結構和功能:結構與結構的數組JNA
typedef struct _Phase_Information
{
char infoMessage[MAX];
} INFORMATION;
typedef struct _Informations
{
int infoCount;
INFORMATION *infoArray;
} INFORMATIONS ;
int GetInformations(INFORMATIONS *pInfos);
我使用它們像這樣:
INFORMATIONS informations;
INFORMATION * informationArray = new INFORMATION[MAX_INFOS];
informations.info = informationArray;
int error = GetInformations(&informations);
現在我想用我的C++庫在Java中使用JNA ...所以我做了以下內容:
我試着這樣調用庫:
Informations.ByReference informations = new Informations.ByReference();
informations.infoArray= new Information.ByReference();
int error = CLib.GetInformations(Informations);
Information[] test =(Information[])informations.infoArray.toArray(Informations.infoCount);
有些時候我只能檢索數組的第一個元素,但剩下的時間我的Java崩潰......所以我相信這是與在java網站上沒有分配內存有關,但我無法進一步:/
調用toArray()可以解決Java崩潰問題,但在調用函數之前我不知道數組的大小,但我認爲這是我們現在必須討論的。謝謝! :) – seveves