Android ndk-r5调用std ::函数

问题描述:

我刚开始使用ndk-r5,我需要导入一个库,它使用std :: numeric_limits,std :: sort和stl中的一些函数。Android ndk-r5调用std ::函数

我不确定这些功能是否支持使用stlport,如果是这种情况,我应该使用什么 构建? 我从文档中读到的是,您必须在Application.mk中包含APP_STL:= stlport_static。多数民众赞成在我做的唯一的额外的事情,但它不工作,编译器是在提到的功能时,我得到编译错误。

感谢您的任何建议。

+0

什么编译错误说:

#include <stdlib.h> /*...*/ qsort(m_pairBuffer, m_pairCount, sizeof(b2Pair),b2PairQSORTLessThan); 

使用此功能上面定义的? – 2011-01-19 16:37:26

这里有很多可能性,您需要发布编译器错误以获得更好的评估。

要检查的东西: 您是否在使用num_get_float.cpp的任何内容?

+0

嗨,不用它。 – 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 

}