Tencent / puerts

PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript.
Other
5.08k stars 707 forks source link

[UE] Bug: 解决bEnableUndefinedIdentifierWarnings的问题 #1765

Closed BlurryLight closed 5 months ago

BlurryLight commented 5 months ago

前置阅读 | Pre-reading

Puer的版本 | Puer Version

1.0.6

UE的版本 | UE Version

5.3

发生在哪个平台 | Platform

Editor(win)

错误信息 | Error Message

No response

问题重现 | Bug reproduce

https://forums.unrealengine.com/t/upgrading-to-5-3-benableundefinedidentifierwarnings-doesnt-seem-to-work/1396256

bEnableUndefinedIdentifierWarnings 这个flag在5.3挂了,似乎还没修好。 主要的问题原因在于v8.h里有一些宏没定义。

解决方案

UE_COMPILER_THIRD_PARTY_INCLUDES_START
#include "libplatform/libplatform.h"
#include "v8.h"
UE_COMPILER_THIRD_PARTY_INCLUDES_END

可以用虚幻的宏包裹住 v8.h的Include即可。

WASM Module 如果不改里面的源码的话,还是需要bEnableUndefinedIdentifierWarnings,因为里面有一些头文件的宏没定义。

chexiongsheng commented 5 months ago

UE_COMPILER_THIRD_PARTY_INCLUDES_START 是从哪个版本开始的呢? 我自己用pragma也能解决问题: https://github.com/Tencent/puerts/commit/feb4912132684f15cc3641020c896bbea333569c 不过目前只是让其它模块使用静态绑定时不需要设置bEnableUndefinedIdentifierWarnings了。但也能用在JsEnv中,使其可以使用PCH。 UE_COMPILER_THIRD_PARTY_INCLUDES_START还有个问题是有些代码是ue、unity,puerts_node上公用的。

chexiongsheng commented 5 months ago

用v8的话,用这个就够了:PRAGMA_DISABLE_UNDEFINED_IDENTIFIER_WARNINGS、PRAGMA_ENABLE_UNDEFINED_IDENTIFIER_WARNINGS

chexiongsheng commented 5 months ago

想解决JsEnv不好搞,搞定一个平台发现还有其它平台、其它backend的各种错误