Как передать массив (массив long в Java) из Java в C ++, используя Swig
У меня есть образец .h файла, как показано ниже:
class Test
{
public:
void SelectValues(long long values[])
};
Я использовал SWIG и создал интерфейс JNI снизу .i файл
%module MyLib
%include "carrays.i"
%array_functions(long long, long_long_array )
%{
#include "Test.h"
%}
/* Let's just grab the original header file here */
%include <windows.i> /*This line is used for calling conventions*/
% include "Test.h"
Когда я создаю Java-метод, он создает:
public void SelectValues(SWIGTYPE_p_long_long includeKeys)
Также для файла JNI он принимает аргумент какjlongArray
но принимая простойjlong
только. Из-за этой проблемы я не могу создать массив длинных какlong[]={1L,2L}
и передайте его вышеупомянутому методу Java для вызова соответствующего метода JNI.
Я хочу, чтобы SWIG генерировал интерфейс таким образом, чтобы я мог передать вышеупомянутый массив моему методу C ++.
я прочиталэтот вопрос, но это не помогло мне понять, как передать массив из Java в C ++.