有时候需要包含一些平台相关的代码,如 windows.h
里面包含了很多头文件,其中一些定义了很多宏,如:
1 |
如果我们同时在代码中包含了 windows.h
和使用了 IPlatformFile
的接口来调用它的 DeleteFile
函数,因为 DeleteFile
被定义成了宏,所以在预处理阶段就会被替换,导致编译时访问 IPlatformFile
的DeleteFileW
成员,但实际上它是不存在的,就产生了以下编译错误:
1 | error C2039: 'DeleteFileW': is not a member of 'IPlatformFile' |
解决办法就是不直接包含 windows.h
而是使用以下封装:
1 |
这样可以避免污染 UE 的符号名字。
UE 的文档中也有介绍:第三方库 #故障排除