申明全局變量,全局函數一定要在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 。