Android ndk-r5调用std::函数

发布于 2024-10-13 00:06:40 字数 257 浏览 1 评论 0原文

我刚刚开始使用 ndk-r5,我需要导入一个库 使用 std::numeric_limits、std::sort 和 stl 中的其他几个函数。

我不确定使用 stlport 是否支持这些功能,如果是这样的话,什么 我应该使用配置来构建? 我从文档中读到的是,您必须在 Application.mk 上包含 APP_STL := stlport_static 。这是我正在做的唯一额外的事情,但它不起作用,当编译器使用上述函数时,我会收到编译错误。

感谢您的任何建议。

i'm just starting to use the ndk-r5 and i need to import a library that
uses std::numeric_limits, std::sort and a couple of more functions from stl.

i'm not sure is those functions are supported using the stlport and if that is the case, what
configuration should i use for building?
what i read from the docs is that you have to include APP_STL := stlport_static on the Application.mk. thats the only additional thing i'm doing but its not working, i get compilation errors when the compiler is on the mentioned functions.

Thanks for any suggestions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

他不在意 2024-10-20 00:06:40

通过替换所有的,我能够在 Android 上进行 Box2D 编译。包含,并修复一些突然出现的问题:
因为

std::numeric_limits::infinity() 

我正在使用

INFINITY /*as defined in float.h ... MAX_FLT is an alternative which might work*/ 

For

std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan)

I did this:

#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

}

I was able to get Box2D compiling on android, by replacing all of the <cheader> includes with <header.h>, and fixing up a few things which crop up:
For

std::numeric_limits::infinity() 

I'm using

INFINITY /*as defined in float.h ... MAX_FLT is an alternative which might work*/ 

For

std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan)

I did this:

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

with this function defined above:

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

}
多孤肩上扛 2024-10-20 00:06:40

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

需要检查的事项:
您是否使用 num_get_float.cpp 中的任何内容?

There are a lot of possibilities here, you'll need to post your compiler errors for a better assessment.

Things to check:
Are you using anything from num_get_float.cpp?

流心雨 2024-10-20 00:06:40

实际上,我可以使用 C 等效项(例如使用 std:: 命名空间调用的数学函数)来解决大多数错误,唯一导致我出现问题的两个是:

(1) numeric_limits 不是“std”的成员,在:
float32 无穷大 = std::numeric_limits::infinity();

以及“排序”的相同类型错误,在:
(2) std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);

我想我可以使用另一个函数来代替这两个函数。我可以使用什么标准 var 来表示无穷大?

Actually most of the errors i can solve them with a C equivalent (like math functions that were called with the std:: namespace) the only two that are causing me problems are:

(1) numeric_limits is not a member of 'std', in:
float32 infinity = std::numeric_limits::infinity();

and the same kind of error for 'sort', in:
(2) std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);

i suppose that i can use another functions to replace these two. what standard var can i use for infinity?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文