LNK4042 object specified more than once; extras ignored的解决方法

C++项目编译时遇到警告(warning)

LNK4042 object specified more than once; extras ignored

 

原因

某个头文件(.h)的文件类型(item type)被设置成了C/C++ compiler,这个类型是.cpp文件的默认类型。

按微软的说法是,Visual Studio对于不同的文件类型设定了对应的处理工具。

例如,C/C++ compiler用的是cl.exe,C/C++ header用的是C/C++ Preprocessor。具体见下面官方文档链接。

 

解决方法

右键头文件(.h) -> 属性(properties) -> 配置属性(Configuration Properties) -> 通用(General) -> 文件类型(Item Type) ->

把C/C++ compiler改成C/C++ header,重新编译项目即可。

* 如果有多个头文件需要修改,可以多选后再右键。

 

* 根本原因

新建头文件时选了默认的C++ File (.cpp),后来又手动改后缀名为.h。

 

* 根本解决方法

如果新建的是头文件,先选择Header File (.h),再输入名字创建。

 

官方文档

https://learn.microsoft.com/en-us/cpp/build/reference/general-property-page-file

 

posted @ 2022-11-04 18:54  Clotho_Lee  阅读(501)  评论(0)    收藏  举报