[原]error LNK2005:"XXX已经在 XXX.obj 中定义 使用 /FORCE(强制文件输出)暴力解决

参考:https://blog.csdn.net/LG1259156776/article/details/80828720

https://blog.csdn.net/cai18381306175/article/details/79383068

https://www.xuebuyuan.com/979269.html

 

error LNK2005是很明显的重定义问题

 

但是有时候,我们用别人的lib进行开发,很难改变重定义问题。

这个时候,我们就选择(强制文件输出)暴力跳过,进行编译。

这里使用/FORCE:MULTIPLE 进行解决

 

方法:

工程  ------》属性

------》连接器

-------》命令行

添加    /FORCE:MULTIPLE 

 

但是,我们要知道为什么添加这个可以编译通过:

/FORCE:[MULTIPLE|UNRESOLVED]  

/FORCE 选项可以带一个可选参数:

  • 使用 /FORCE:MULTIPLE 可创建输出文件,而不管 LINK 是否找到了符号的多个定义。

  • 使用 /FORCE:UNRESOLVED 可创建输出文件,而不管 LINK 是否找到未定义的符号。如果未解析入口点符号,则将忽略 /FORCE:UNRESOLVED。

不带参数的 /FORCE 表示多次定义和未解析。

用该选项创建的文件可能不会按预期运行。 当指定 /FORCE 选项时,链接器将不增量链接。

如果使用 /clr 编译模块,则 /FORCE 将不会创建映像。

 

参见:

链接器选项

 

posted @ 2019-07-04 16:11  南水之源  阅读(996)  评论(0编辑  收藏  举报