Android ndk-r5 вызывает std :: functions - PullRequest
0 голосов
/ 19 января 2011

Я только начинаю использовать ndk-r5, и мне нужно импортировать библиотеку, которая использует std :: numeric_limits, std :: sort и несколько других функций из stl.

Яне уверен, что эти функции поддерживаются с помощью stlport, и если это так, какую конфигурацию мне использовать для сборки?Что я прочитал из документации, так это то, что вы должны включить APP_STL: = stlport_static в Application.mk.это единственная дополнительная вещь, которую я делаю, но она не работает, я получаю ошибки компиляции, когда компилятор работает с упомянутыми функциями.

Спасибо за любые предложения.

Ответы [ 3 ]

1 голос
/ 23 марта 2011

Мне удалось собрать Box2D на Android, заменив все включенные на

и исправив несколько вещей, которые возникают: Для
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

}
0 голосов
/ 19 января 2011

На самом деле большинство ошибок, которые я могу решить с помощью эквивалента C (например, математические функции, которые были вызваны с помощью std :: namespace), единственные две, которые вызывают у меня проблемы:

(1) numeric_limitsне является членом 'std', в: float32 infinity = std :: numeric_limits :: infinity ();

и такой же ошибки для 'sort', в: (2) std :: sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);

Я полагаю, что я могу использовать другие функции для замены этих двух.Какой стандартный вар я могу использовать для бесконечности?

0 голосов
/ 19 января 2011

Здесь много возможностей, вам нужно будет опубликовать ошибки своего компилятора для лучшей оценки.

Что нужно проверить: вы используете что-нибудь из num_get_float.cpp?

...