Projem için üçüncü taraf C++ API kullanıyorum ve std::vector<int>
, std::vector<bool>
, std::vector<double>
türlerine sahip döndürme değerleriyle işlevleri var. Bu tür değişkenleri Java'ya aktarmam gerekiyor. Bu yüzden JNI kullanıyorum ve işlevimin jintArray
, jbooleanArray
, jdoubleArray
türleriyle dönüş değerleri var. Bu kod bloğu ile bir sorunum varC++ ilkel türünü java ilkel tür dizisine dönüştürün
std::vector<double> data;
//fill data
jdouble *outArray = &data[0];
jdoubleArray outJNIArray = (*env).NewDoubleArray(data.size()); // allocate
if (NULL == outJNIArray) return NULL;
(*env).SetDoubleArrayRegion(outJNIArray, 0 , data.size(), outArray); // copy
return outJNIArray;
:
Ben double
türünü dönüştürmek için aşağıdaki kodu kullanıyorum. Ben int
ve bool
türleri için bunu yapmak istediğinizde Fakat bir sorun var şu:
std::vector<int> data;
//fill data
jint *outArray = &data[0];
ve
std::vector<bool> data;
//fill data
jboolean *outArray = &data[0];
sorun jint
ve jboolean
tanımları ile,
typedef long jint;
typedef unsigned char jboolean;
ve jdouble
için:
typedef double jdouble;
olarak, double
benim elverişli çözüm uymuyor onların typedefs beri int
ve bool
türleri için çalışmaz görebilirsiniz.
Yani, benim sorum ben tüm ilkel tipleri rahatlıkla için bu dönüşümü yapabiliriz nasıl? veri türleri yana peşin
Fabrika yap? – ChiefTwoPencils
Oh, bu nedir? – guneykayim