我刚刚开始使用ndk-r5,我需要导入一个库 使用std :: numeric_limits,std :: sort和stl。
中的几个函数我不确定是否使用stlport支持这些功能,如果是这样的话,那是什么 我应该用于构建配置? 我从文档中读到的是你必须在Application.mk上包含APP_STL:= stlport_static。这是我正在做的唯一额外的事情,但它不起作用,当编译器处于上述功能时,我得到编译错误。
感谢您的任何建议。
答案 0 :(得分:1)
通过替换所有< cheader>,我能够在Android上获得Box2D编译。包括< header.h>,并修复一些突然出现的事情: 对于
std::numeric_limits::infinity()
我正在使用
INFINITY /*as defined in float.h ... MAX_FLT is an alternative which might work*/
对于
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan)
我这样做了:
#include <stdlib.h>
/*...*/
qsort(m_pairBuffer, m_pairCount, sizeof(b2Pair),b2PairQSORTLessThan);
使用上面定义的函数:
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
}
答案 1 :(得分:0)
这里有很多可能性,您需要发布编译器错误以便进行更好的评估。
要检查的事项:
您使用的是num_get_float.cpp
吗?
答案 2 :(得分:0)
实际上我用C等价物解决它们的大多数错误(比如用std :: namespace调用的数学函数)只会导致我出现问题的两个错误是:
(1)numeric_limits不是'std'的成员,在: float32 infinity = std :: numeric_limits :: infinity();
和'sort'的同类错误,在: (2)std :: sort(m_pairBuffer,m_pairBuffer + m_pairCount,b2PairLessThan);
我想我可以使用其他功能来取代这两个。我可以使用什么标准var用于无限?