插座代码在NaCl中破裂

时间:2014-03-18 22:15:31

标签: sockets google-nativeclient

我有大量已经移植到NaCl的现有BSD套接字代码。我能够构建,链接和运行此代码,但是一旦达到套接字代码,NaCl模块就会崩溃。

我现在正在使用nacl_io,但是当我尝试调用TCP连接函数时,我收到errno 38的错误,这意味着

#define ENOSYS      38  /* Function not implemented */ 

为什么调用connect函数失败但我能够通过gethostbyname()成功解析主机?

请注意,我使用的是nacl_io demo中的示例代码。演示中的代码工作正常,但是当复制到我自己的项目时,我在调用connect()时遇到错误。

1 个答案:

答案 0 :(得分:0)

只要先调用nacl_io_init_ppapi函数,connect()就不应该返回ENOSYS。

我最初在pthread之后列出的make文件中有nacl_io。将nacl_io移动到链接器列表的前面修复了这个问题。

nacl_io定义了很少在libpthread中定义的函数。如果在nacl_io之前列出libpthread,则使用libpthread中的函数,如果它在nacl_io之后列出,则使用nacl_io中的函数。