WebGL-编译报错,如何定位sendfile报错位置

news2024/9/20 10:43:55

1)WebGL-编译报错,如何定位sendfile报错位置
2)设置DepthBufferBits和设置DepthStencilFormat的区别
3)Unity打包exe后,游戏内拉不起Steam的内购
4)使用了Play Asset Delivery提交版本被Google报错


这是第395篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Platform

Q:找了资料,也请教了同行。均反馈是因为WebGL平台限制了System.IO的一些类、方法导致的。但是经过尝试,把项目中所有的System.IO都做了封装,依旧出现此编译报错。

不知道有没有什么更好的办法,定位到sendfile这个报错的具体位置,比如:某个脚本的引用、或者类、或者方法等,更为详细的一些信息?

完整报错信息如下:

Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
emcc2: warning: C:\Users\ADMINI~1\AppData\Local\Temp\tmpszj8f2k_libxlua.a: archive is missing an index; Use emar when creating libraries to ensure an index is created [-Wemcc]
emcc2: warning: C:\Users\ADMINI~1\AppData\Local\Temp\tmpszj8f2k_libxlua.a: adding index [-Wemcc]
error: undefined symbol: sendfile (referenced by top-level compiled C/C++ code)
warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
warning: _sendfile may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
emcc2: error: '"C:/Program Files/Unity 2022.1.24f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/node/node.exe" "C:\Program Files\Unity 2022.1.24f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js" C:\Users\ADMINI~1\AppData\Local\Temp\tmpz3_8ynyl.txt' failed (1)
UnityEditor.GenericMenu:CatchMenu (object,string[],int)

A:sendfile大概率不是IO接口,而是网络Socket的接口。WebGL限制不能用C# System.Net.*命名空间。要定位函数名,建议从IL2CPP结果里找。

打开Unity,触发WebGL打包,出现报错后,Unity先别关。Unity会把转换的中间结果的cpp代码生成到项目il2cppOutput目录,旧版Unity是放在Temp目录里,新版Unity的Bee构建结果不确定是不是在Temp目录里,但最终应该也一样能在工程里搜到il2cppOutput目录。

在il2cppOutput目录里直接字符串搜索下sendfile就知道是什么命名空间或者方法被引入了。

感谢裹面过油炸@UWA问答社区提供了回答


Rendering

Q:请教一下,RT里面设置DepthBufferBits和设置DepthStencilFormat有什么不同吗?

A:DepthBufferBits仅指定深度缓冲区的位数。DepthStencilFormat可以同时指定深度缓冲区和模板缓冲区的格式和精度。

如果你只需要深度缓冲区,那么DepthBufferBits可能就足够了。如果你需要用模板缓冲区,那么使用DepthStencilFormat会更合适。

感谢萧小俊@UWA问答社区提供了回答


Platform

Q:在Unity编辑器里是可以拉起内购界面,但是无法点击。打包出exe,内购界面是拉不起的。用的是Steamworks.NET,编辑器和exe的环境服务器都是一样的,steam_appid也是对的。求解答!

A1:我之前遇到过同样的问题:

  1. 首选游戏启动的时候,桌面右下角会有个Steam的弹窗(这个有一定要有!没有就会有问题)。
  2. 确认一下exe所在的目录是否有权限问题,之前遇到过Steam启动需要Windows管理员权限,所以Steam开启其他应用时都是管理员,这个要保持一致(比如Steam在“C:\Program Files”,那exe就需要右键管理员启动)。

感谢梁栋@UWA问答社区提供了回答

A2:猜测一下原因:

  1. SDK集成问题,先把IL2CPP的裁剪关了。
  2. 关闭Unity(包含Unity Hub)和Steam,重启Steam后再运行exe。
  3. 把打包后的exe放到非中文路径下运行。

感谢萧小俊@UWA问答社区提供了回答


Platform

Q:Google Play选择了Target API Level 34之后,如果项目使用了Play Asset Delivery功能提交版本,会被Google报错(关于Foreground Services Permissions)。

前述截图中,点击Go to declaration后,展示一个空列表,并没有说明我要求了哪些 Permission。

尝试解决,在AndroidManifest中加入如下内容(想办法去除权限),仍然不能解决问题:

<!-- Foreground Services permissions -->

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove" />

<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" tools:node="remove" />

A1:前台服务类型就几种,用以下官方文档跟你目前的权限对照一下:
前台服务类型  |  Background work  |  Android Developers

感谢萧小俊@UWA问答社区提供了回答

A2:33版本,Play Asset Delivery的install-time模式不需要任何权限。如果34版本不行,可以降到33版本。因为我搜索了下Google Play Asset Delivery,并不需要任何权限。而且我反编译了自己的项目,里面也没有任何多余的权限。

感谢qingfeng@UWA问答社区提供了回答

A3: 据我了解,谷歌强制的就是要升到34(最晚可延期到2024.11.1),其实是需要权限的,藏在Asset Delivery库里。

感谢加菲教主@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx的HA高可用的搭建

1. 什么是高可用 高可用&#xff08;High Availability, HA&#xff09;是一种系统设计策略&#xff0c;旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时&#xff0c;仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防…

MySQL下载安装(保姆式教程)以及解决一些可能的问题

目录 MySQL的下载和安装 显示路径已经存在问题解决 注意&#xff1a; 端口被占用问题解决 注意&#xff1a; 服务名占用问题解决 注意&#xff1a; 应用配置问题解决 注意&#xff1a; MySQL环境配置 检查MySQL是否成功安装 如何将MySQL文件删除干净 MySQL的下载和安装 首先直接…

Python(字符串)

方法名描述说明 str.lower() 将str字符串全部转化为小写字母&#xff0c;结果为一个新的字符串str.upper()将str字符串全部转化为大写字母&#xff0c;结果为一个新的字符串str.split(sepNone)将str按照指定的分隔符sep分隔&#xff0c;结果为列表类型str.count(sub)结果为…

Golang | Leetcode Golang题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; func maxSlidingWindow(nums []int, k int) []int {n : len(nums)prefixMax : make([]int, n)suffixMax : make([]int, n)for i, v : range nums {if i%k 0 {prefixMax[i] v} else {prefixMax[i] max(prefixMax[i-1], v)}}for i : n - 1…

使用C#实现无人超市管理系统——数据结构课设(代码+PPT+说明书)

说明&#xff1a;这是自己做的课程设计作业&#xff0c;得分情况98/100 如果想要获取私信我 本项目采用线性表中的链表来进行本次系统程序的设计。链表分为两条线&#xff0c;分别是存储用户信息和商品信息&#xff0c;并且都设为公共属性&#xff0c;方便对用户信息和商品信息…

QT5:多窗口跳转

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助 目录 前言 一、环境 二、步骤 三、代码实现 四、效果图 前言 学习使用qt5完成多窗口&#xff08;界面&#xff09;跳转&#xff1a;从主界面可分别跳转至界面一和界面二&#xf…

echarts实现3d柱状效果

代码如下&#xff0c;单个的调第一个方法&#xff0c;多个柱状的调第二个方法&#xff0c;具体情况修改参数或者二次开发即可 //3d柱状图 export function getEcharts3DBar (xAxisData:string[][name1,name2,name3], data:number[][1,2,3], colorObj:IBaseObject{topStartColo…

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.4信息安全与2.1.5信息技术的发展

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

css前端面试题

1.什么是css盒子模型&#xff1f; 盒子模型包含了元素内容&#xff08;content&#xff09;、内边距&#xff08;padding&#xff09;、边框&#xff08;border&#xff09;、外边距&#xff08;margin&#xff09;几个要素。 标准盒子模型和IE盒子模型的区别在于其对元素的w…

QT调用VNC并放到一个窗口中

1.VNC资源下载 本例中的这个VNC可以从以下连接中下载&#xff0c;也可以从官网上下载&#xff0c;应该都是类似的。 https://download.csdn.net/download/xiaoding_ding/89549092 下载完成后放到项目的release文件夹中 2.程序中引用 2.1在主界面中放置一个按钮&#xff0c;…

NAS新品“翻车”后,绿联科技要上市了

在消费电子市场回暖的东风中&#xff0c;又一消费电子知名企业登陆A股。 近日&#xff0c;深圳市绿联科技股份有限公司&#xff08;下称“绿联科技”&#xff09;开启申购&#xff0c;将在创业板上市。本次上市&#xff0c;绿联科技的发行价为21.21元/股&#xff0c;发行数量为…

【自动驾驶汽车通讯协议】SPI通讯:深入理解与应用

文章目录 0. 前言1. 工作原理2. 模式与配置2.1 CPOL (Clock Polarity)2.2 CPHA (Clock Phase)2.3 组合模式 3. 特性与优势4. 在自动驾驶汽车中的应用5. 结论 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见…

给定一整数数组,其中有p种数出现了奇数次,其他数都出现了偶数次,怎么找到这p个数?

给定一长度为m的整数数组 &#xff0c;其中有p种不为0的数出现了奇数次&#xff0c;其他数都出现了偶数次&#xff0c;找到这p个数。 要求&#xff1a;时间复杂度不大于O(n)&#xff0c;空间复杂度不大于O(1)。 由于时间复杂度不大于O(n)&#xff0c;则不能在遍历数组中嵌套遍…

SpringMVC源码深度解析(中)

接上一遍博客《SpringMVC源码深度解析(上)》继续聊。最后聊到了SpringMVC的九大组建的初始化&#xff0c;以 HandlerMapping为例&#xff0c;SpringMVC提供了三个实现了&#xff0c;分别是&#xff1a;BeanNameUrlHandlerMapping、RequestMappingHandlerMapping、RouterFunctio…

基于VMware(虚拟机) 创建 Ubunton24.04

目录 1.设置 root 密码 2. 防火墙设置 2.1 安装防火墙 2.2 开启和关闭防火墙 2.3 开放端口和服务规则 2.4 关闭端口和删除服务规则 2.5 查看防火墙状态 3. 换源 3.1 源文件位置 3.2 更新软件包 1.设置 root 密码 1. 切换到 root 用户 sudo -i 2. 设置新密码&#…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设&#xff08;CAN控制器)&#xff0c;支持CAN2.0A和2.0B&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…

前端表格解析方法

工具类文件 // fileUtils.tsimport { ref } from vue; import * as xlsx from xlsx;interface RowData {[key: string]: any; }export const tableData ref<RowData[]>([]);export async function handleFileSelect(url: string): Promise<void> {try {const res…

【Git远程操作】忽略特殊文件 | 配置命令别名

目录 忽略特殊文件 配置命令别名 忽略特殊文件 前面我们讲到git提供了一个特殊的配置文件.gitignore模板 在⽇常开发中&#xff0c;我们有些⽂件不想或者不应该提交到远端&#xff0c;⽐如保存了数据库密码的配置⽂件&#xff0c;那怎么让 Git 知道呢&#xff1f;在 Git ⼯作…

python-网络并发模型

3. 网络并发模型 3.1 网络并发模型概述 什么是网络并发 在实际工作中&#xff0c;一个服务端程序往往要应对多个客户端同时发起访问的情况。如果让服务端程序能够更好的同时满足更多客户端网络请求的情形&#xff0c;这就是并发网络模型。 循环网络模型问题 循环网络模型只能…

【应急响应】Windows应急响应手册(勒索病毒篇)

文章目录 前言一、勒索病毒简述保护现场确定勒索病毒家族根据勒索病毒类型寻找解决方法寻找加密器解决勒索善后阶段常规安全检查阶段 前言 本篇内容围绕勒索病毒事件进行分析&#xff0c;通过使用技术手段来确定勒索病毒家族并寻找解密方法&#xff0c;实战中过程中可参考文中…