当前位置: 首页 > news >正文

Unity WebGL平台Hybrid Generate All报错undefined symbol sendfile

详细报错信息如下:

Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: undefined symbol: sendfile (referenced by top-level compiled C/C++ code)
UnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions)
HybridCLR.Editor.Commands.StripAOTDllCommand:GenerateStripedAOTDlls (UnityEditor.BuildTarget) (at Library/PackageCache/com.code-philosophy.hybridclr@3705ca6e1f/Editor/Commands/StripAOTDllCommand.cs:144)

这个报错一般是网络socket接口的问题。WebGL限制了不能使用C# System.Net.*命名空间,要定位到这个函数,可以在Library\Bee下搜索sendfile关键词。
在这里插入图片描述

在il2cppOutput目录下的即可找到相关函数。

  • Il2CppInteropDataTable.cpp中可以搜索到:
{ DelegatePInvokeWrapper_SendFileHandler_tFBB94763A61E5EC1AF7F81EC6F05F460B913B902, NULL, NULL, NULL, NULL, NULL, &SendFileHandler_tFBB94763A61E5EC1AF7F81EC6F05F460B913B902_0_0_0 } /* System.Net.Sockets.Socket/SendFileHandler */,
  • System4.cpp中可以搜索到:
// System.Boolean System.Net.Sockets.Socket::SendFile_internal(System.Net.Sockets.SafeSocketHandle,System.String,System.Byte[],System.Byte[],System.Net.Sockets.TransmitFileOptions,System.Int32&,System.Boolean)
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR bool Socket_SendFile_internal_m8EC495EAD620E62F58D9A3E9E1FA560D3D232128 (SafeSocketHandle_t5A597D30D951E736B750ED09D5B3AB72F98407EE* ___safeHandle0, String_t* ___filename1, ByteU5BU5D_tA6237BF417AE52AD70CFB4EF24A7A82613DF9031* ___pre_buffer2, ByteU5BU5D_tA6237BF417AE52AD70CFB4EF24A7A82613DF9031* ___post_buffer3, int32_t ___flags4, int32_t* ___error5, bool ___blocking6, const RuntimeMethod* method) ;

可以看到SendFile方法为System.Net.Sockets.Soket下的方法。由于笔者是WebGL项目,也确实没有用到这部分代码,于是在Hybrid的Link.xml中把System.Net.Sockets相关的都删除了,再Generate,一切顺利(当然这些都是通过写工具来实现自动化)。

http://www.lryc.cn/news/424768.html

相关文章:

  • Java高级Day28-多线程
  • 0003 保险的会计要素及其计量属性
  • Swift版本控制的艺术:掌握代码演化的魔杖
  • 学习实战:生活垃圾自动识别与分类系统的实现
  • Swift模块化构建:解锁代码重用的金钥匙
  • 【计算机网络】CIDR无分类编址知识学习
  • JavaScript 详解
  • 运维实践01-安装OpenJDK
  • Windows下,C# 通过FastDDS高效通信
  • 【模型】ResNet
  • Objective-C中NSExpression与NSPredicate的协同艺术
  • Apache-JMeter压测工具教程
  • Spring Boot集成selenium实现自动化测试
  • 基于phpstudy对cmseasy5.5进行漏洞复现
  • 【c++】 C语言的输入与输出C++的IO流STL空间配置器
  • 基于Faster-RCNN的停车场空位检测,支持图像和视频检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • Vue3从零开始——带你轻松掌握组件的基本操作
  • 【MySQL 03】库的操作 (带思维导图)
  • SpringBoot-读取配置文件内容
  • springboot整合springmvc
  • el-cascader多选的父子关联和父子不关联功能
  • #Datawhale AI夏令营第4期#多模态大模型Task2
  • LeetCode 热题100-1
  • 表现良好的最长时间段(LeetCode)
  • 【性能优化】DNS解析优化
  • 【剑指 offer】合并链表
  • 红酒与节日装饰:打造节日氛围的需备品
  • Element Plus的el-carousel走马灯平铺多张图片
  • 【promise】Promise的几个关键问题 (三)
  • 利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)