第一次在此定義 多重定義 multiple definition of


報錯:

screenshot.o:在函數‘OnvifClientDevice::GetDNS(_tds__GetDNSResponse&)’中:
screenshot.cpp:(.text+0x390): multiple definition of `OnvifClientDevice::GetDNS(_tds__GetDNSResponse&)'
ptzcontrol.o:ptzcontrol.cpp:(.text+0xa0):第一次在此定義

問題調查:

一個頭文件 a.h 中函數聲明且定義了,也就是

bool foo(int i){
  return i = 42;
}

這時候在 b.h 和 c.h 中都include  a.h,盡管有#ifdef來保護,但是還是會報上面的錯

問題解決:

兩個辦法,(1)在函數的名稱之前增加inline關鍵字(2)將函數的定義放到.cpp中,並且在.h中聲明之前加inline

我用的方法1,很好用


免責聲明!

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



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