Android ndk-r5调用std ::函数
我刚开始使用ndk-r5,我需要导入一个库,它使用std :: numeric_limits,std :: sort和stl中的一些函数。Android ndk-r5调用std ::函数
我不确定这些功能是否支持使用stlport,如果是这种情况,我应该使用什么 构建? 我从文档中读到的是,您必须在Application.mk中包含APP_STL:= stlport_static。多数民众赞成在我做的唯一的额外的事情,但它不工作,编译器是在提到的功能时,我得到编译错误。
感谢您的任何建议。
这里有很多可能性,您需要发布编译器错误以获得更好的评估。
要检查的东西: 您是否在使用num_get_float.cpp
的任何内容?
嗨,不用它。 – 2011-01-19 18:51:01
其实大部分错误,我可以用等价的C(如数学函数被称为用的std ::命名空间),这些导致了我的问题只有两个是解决这些问题:
(1)numeric_limits是不是'std'的成员,在: float32 infinity = std :: numeric_limits :: infinity();
与'sort'相同的错误,在: (2)std :: sort(m_pairBuffer,m_pairBuffer + m_pairCount,b2PairLessThan);
我想我可以用另一个函数来代替这两个。什么标准变种我可以用于无限?
我能得到Box2D的编译Android上,更换所有的<cheader>包括与<header.h>,并固定了一些事情突然出现: 对于
std::numeric_limits::infinity()
我“M使用
INFINITY /*as defined in float.h ... MAX_FLT is an alternative which might work*/
对于
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan)
我这样做:
static int b2PairQSORTLessThan(const void*element1,const void*element2)
{
b2Pair *pair1=(b2Pair*)element1;
b2Pair *pair2=(b2Pair*)element2;
if (pair1->proxyIdA < pair2->proxyIdA)
return -1;//pair1 goes BEFORE pair2
else if (pair1->proxyIdA > pair2->proxyIdA)
return 1; // pair1 goes AFTER pair2
else{//if (pair1->proxyIdA == pair2->proxyIdA)
if (pair1->proxyIdB < pair2->proxyIdB)
return -1;
else if (pair1->proxyIdB > pair2->proxyIdB)
return 1;
}
return 0; // they are equal
}
什么编译错误说:
使用此功能上面定义的? – 2011-01-19 16:37:26