【发布时间】:2011-02-18 11:10:05
【问题描述】:
我正在尝试在 android 上编译网络代码并看到编译错误。我使用的结构是 ip_mreq_source 应该像这样在标题中定义:
struct ip_mreq_source {
struct in_addr imr_multiaddr;
struct in_addr imr_sourceaddr;
struct in_addr imr_interface;
};
其中 in_addr 应定义为:
typedef uint32_t in_addr_t;
struct in_addr
{
in_addr_t s_addr;
};
我的详细错误来自基于 Android 的编译器的 g++ (GCC 4.4.3):
arm-linux-androideabi-g++ -MMD -MP -MF groupsock/GroupsockHelper.o.d.org -fpic
-ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__
-D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float
-fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-
limit=64 -Igroupsock/include -Igroupsock/../UsageEnvironment/include -Iandroid-
ndk-r5b/sources/cxx-stl/system/include -Igroupsock -DANDROID -Wa,--noexecstack
-DANDROID_NDK -Wall -fexceptions -O2 -DNDEBUG -g -Iandroid-8/arch-arm/usr/include -c
groupsock/GroupsockHelper.cpp -o groupsock/GroupsockHelper.o && rm -f
groupsock/GroupsockHelper.o.d && mv groupsock/GroupsockHelper.o.d.org
groupsock/GroupsockHelper.o.d
groupsock/GroupsockHelper.cpp: In function 'Boolean socketJoinGroupSSM(UsageEnvironment&, int, netAddressBits, netAddressBits)':
groupsock/GroupsockHelper.cpp:427: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_multiaddr', which is of non-class type '__u32'
groupsock/GroupsockHelper.cpp:428: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_sourceaddr', which is of non-class type '__u32'
groupsock/GroupsockHelper.cpp:429: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_interface', which is of non-class type '__u32'
我不确定是什么导致了错误。任何指针都会很棒 - 没有双关语。 谢谢
【问题讨论】:
-
给我们
x结构,还有具体的错误信息,请(:另外,这看起来更像C,而不是C++ -
“struct x”是如何声明的?推测成员 s 不是 __u32,但 Value 是。
-
如果您的机器上有 /usr/include/netinet/in.h,则 struct1 -> ip_mreq, x -> in_addr(对多播地址、互联网地址等采取不同的形式)。我还没有找到“x”的正确声明。还在寻找:(
-
明白了!
struct x { uint32_t s; } -
值也是 u_int32_t 类型 :(....不知道这是怎么回事。虽然我必须说成员 's' 实际上是 'in_addr_t' 类型,其中:
typedef uint32_t in_addr_t
标签: c++ android c struct android-ndk