首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将c指针转换为float[]

将c指针转换为float[]
EN

Stack Overflow用户
提问于 2014-09-30 21:14:55
回答 1查看 518关注 0票数 0

如何将c中的返回值转换为java中的float[]

代码语言:javascript
复制
//C Function
inline float32* b2Body::GetWorldPoint(float32 localX, float32 localY)
{
    b2Vec2 val = b2Mul(m_xf, b2Vec2(localX, localY));
    fin[0] = val.x, val.y;
    fin[1] = val.y;
    return fin;
}

如您所见,函数返回float32 32*,这是一个两个元素数组。在我的文件中我包括

代码语言:javascript
复制
%include cpointer.i
%include "arrays_java.i"
%apply float[] {float32*};

但我知道错误是:

代码语言:javascript
复制
.cpp: In function '_jfloatArray* Java_com_google_fpl_liquidfun_liquidfunJNI_Body_1getWorldPoint_1_1SWIG_11(JNIEnv*, jclass, jlong, jobject, jfloat, jfloat)':
C:/Users/Garrett/Desktop/liquidfun-master/liquidfun//Box2D/swig/jni/../gen/cpp/armeabi-v7a/liquidfun_wrap.cpp:6147:59: error: 'FillMeInAsSizeCannotBeDeterminedAutomatically' was not declared in this scope
make.exe: *** [obj/local/armeabi-v7a/objs/liquidfun_jni/gen/cpp/armeabi-v7a/liquidfun_wrap.o] Error 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-01 12:29:34

这基本上是与邮件列表上的一个老问题相同的解决方案

代码语言:javascript
复制
%include cpointer.i
%include "arrays_java.i"
%typemap(out) float[] 
%{$result = SWIG_JavaArrayOutFloat(jenv, (float *)$1, 2); %}
%apply float[] {float32*};

请注意,正如所写的那样,这将导致SWIG假设所有作为返回类型使用的float*都是大小为2的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26130238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档