C/C++教程

【Debug】C++编译报错 prerequisites are different 解决方案

本文主要是介绍【Debug】C++编译报错 prerequisites are different 解决方案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 场景
  • 原因
  • 解决方案

场景

将新的 x.h / x.hpp / x.c / x.cpp 文件添加入 UE4 项目中时,即使没有别的文件 include 这些新文件,编译时(Build/Rebuild 均会)可能会出现如下报错:
unrealbuildtool prerequisites are different
这个报错发生在编译出 x.obj 文件,但不能正确执行 LINK 操作

原因

顾名思义,代码本身没有问题,而是代码块无法融入已有项目。 UE4 对于 include 文件有路径上的预处理,如果文件的路径名重复,则会出现这个问题。例如:

  1. module 下已有 Proto/error.pb.h
  2. 尝试新增 Server/XXServer/proto/error.pb.h

根据 UE4 的 include 规则,#include "proto/error.pb.h" 可能(在Server/XXServer 目录下的文件引入时)同时指向两个文件,从而无法准确判断,编译报错。

注:windows 下 unrealbuildtool 不判断大小写,Proto/ 和 proto/ 的路径相同

解决方案

  1. 目录路径不要有重叠,尽可能避免路径同名
  2. 同名路径下不要有同名文件
这篇关于【Debug】C++编译报错 prerequisites are different 解决方案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!