前言
公司里需要開發多個動態庫鏈接在一起的程序,然而經常在一些地方出現莫名其妙的undefined symbol問題
解決方案
1.檢查Makefile/CMakeList.txt,查看是否包含所有需要包含的文件/文件夾。 錯誤原因:有時候由於新添加了一個文件/文件夾,而該文件/文件夾又沒有被Makefile/CMakeList.txt掃描到,這時候就會在實際運行時出現undefined symbol,原因是編譯時找到了對應的頭文件,卻在鏈接時未找到需要的頭文件。
2.查看對應函數在頭文件和Cpp文件中是否有相同的函數結構。 錯誤原因:有時候往往是先把一堆頭文件先寫好,結果在寫實現時容易忘記寫一兩個函數實現,然后就容易編譯過了,但鏈接時沒過,因為鏈接時需要把頭文件和Cpp文件鏈接在一起。