我有一个带有多个插件的虚幻引擎 4 项目。这些插件中的一个包含一个FileHelper
带有方法的类CreateFile
。这几个月来一直运行良好,但在最近的一次提交中,一个不同的插件添加了一个调用FileHelper::CreateFile
,现在有时我收到一个链接器错误,说它CreateFileW
不是成员FileHelper
(这不会出现在每个构建中,我还无法解释)。我继续CreateFile
像这样暂时取消定义
#include "UtilPlugin/File/FileSystemHelper.h"
#ifdef _WIN32
#pragma push_macro("CreateFile")
#undef CreateFile
#endif //_WIN32
...//new code including CreateFile call
#ifdef _WIN32
#pragma pop_macro("CreateFile")
#endif //_WIN32
但现在我收到错误
C2039“CreateFile”:不是“FileSystemHelper”的成员
C3861'CreateFile':找不到标识符
由于我知道CreateFile
在其他地方被成功调用(至少在与 相同的插件中FileSystemHelper
),我知道它存在。
因此我的问题是,如果 undefine 可以影响这样的成员函数。我已将#undef
代码中包含的部分移到上面,并且不再出现错误,但由于它看似随机发生,我不完全确定我是否真的解决了问题。