我有大量已经移植到NaCl的现有BSD套接字代码。我能够构建,链接和运行此代码,但是一旦达到套接字代码,NaCl模块就会崩溃。
我现在正在使用nacl_io
,但是当我尝试调用TCP连接函数时,我收到errno 38
的错误,这意味着
#define ENOSYS 38 /* Function not implemented */
为什么调用connect
函数失败但我能够通过gethostbyname()
成功解析主机?
请注意,我使用的是nacl_io
demo中的示例代码。演示中的代码工作正常,但是当复制到我自己的项目时,我在调用connect()
时遇到错误。
答案 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中的函数。