您的位置:首页 > 其它

终于动手compile live555mediaserver.so了

2012-04-08 17:15 323 查看
如何编写Application.mk和Android.mk 参考https://github.com/boltonli/ohbee/tree/master/android 真是个好东西来着

碰到的问题:

1. xlocale.h找不到   加个compile条件

LOCAL_CPPFLAGS
:=  -DLOCALE_NOT_USED 

2. 提示-fexceptions, 加上

LOCAL_CPPFLAGS
:=   -fexceptions

3. compile  GroupsockHelper.cpp 发生 error:which is of non-class type '__u32'

改写GroupsockHelp.cpp的code segment如下:

Boolean socketJoinGroupSSM(UsageEnvironment& env, int socket,
  netAddressBits groupAddress,
  netAddressBits sourceFilterAddr) {

  if (!IsMulticastAddress(groupAddress)) return True; // ignore this case

  struct ip_mreq_source imr;

//  imr.imr_multiaddr.s_addr = groupAddress;

//  imr.imr_sourceaddr.s_addr = sourceFilterAddr;

//  imr.imr_interface.s_addr = ReceivingInterfaceAddr;

    imr.imr_multiaddr = groupAddress;

    imr.imr_sourceaddr = sourceFilterAddr;

    imr.imr_interface = ReceivingInterfaceAddr;

    

  if (setsockopt(socket, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
(const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {

    socketErr(env, "setsockopt(IP_ADD_SOURCE_MEMBERSHIP) error: ");

    return False;

  }

  return True;

}

Boolean socketLeaveGroupSSM(UsageEnvironment& /*env*/, int socket,
   netAddressBits groupAddress,
   netAddressBits sourceFilterAddr) {

  if (!IsMulticastAddress(groupAddress)) return True; // ignore this case

  struct ip_mreq_source imr;

//  imr.imr_multiaddr.s_addr = groupAddress;

//  imr.imr_sourceaddr.s_addr = sourceFilterAddr;

//  imr.imr_interface.s_addr = ReceivingInterfaceAddr;    

    imr.imr_multiaddr = groupAddress;

    imr.imr_sourceaddr = sourceFilterAddr;

    imr.imr_interface= ReceivingInterfaceAddr;

  if (setsockopt(socket, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP,
(const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {

    return False;

  }

  return True;

}

然后就搞定了。。。 泪流满面的在libs\armeabi中出现了 libmediaServer.so...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket struct interface