2011-01-19 83 views
0

我剛開始使用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

回答

0

這裏有很多可能性,您需要發佈編譯器錯誤以獲得更好的評估。

要檢查的東西: 您是否在使用num_get_float.cpp的任何內容?

+0

嗨,不用它。 – 2011-01-19 18:51:01

0

其實大部分錯誤,我可以用等價的C(如數學函數被稱爲用的std ::命名空間),這些導致了我的問題只有兩個是解決這些問題:

(1)numeric_limits是不是'std'的成員,在: float32 infinity = std :: numeric_limits :: infinity();

與'sort'相同的錯誤,在: (2)std :: sort(m_pairBuffer,m_pairBuffer + m_pairCount,b2PairLessThan);

我想我可以用另一個函數來代替這兩個。什麼標準變種我可以用於無限?

1

我能得到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 

} 
相關問題