fatal error LNK1169: 找到一個或多個多重定義的符號


申明全局變量,全局函數一定要在cpp中申明,其他類引用該全局變量就include該cpp的h文件,然后extern一下就好了。否則容易出現該重復定義錯誤。

 

這個"容易"是如何解釋的呢?

例如 A.h 中如果申明了全局變量

int Global;

在 B.h 中

include "A.h"
.....
extern int Global;
......

 

則你 include A.h 相當於把 A.h 中全局變量的申明也 include 進來了,編譯器就會認為是重復定義。

所以全局變量和函數申明一定要在cpp中 ,當 .h 文件里有函數實現時,VS編譯器報此錯誤。


解決方法
1.在.h里的函數聲明前加 inline
2.在項目->屬性->鏈接器->命令行->附加選項中加  /force 

以上裝載自 David_Hu

 

我也遇到這個錯誤,不過整個工程包含的文件太多,不好分析包含關系,但問題應該差不多的。

我的解決辦法是:

項目 –> 屬性 –> 鏈接器 –> 命令行 –> 附加選項中 加 /force

就解決了 error,不過出現了一堆 warning 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM