我試圖建立easylogging++
在一個項目中,我遇到了以下問題調用宏只有一次:項目
宏INITIALIZE_EASYLOGGINGPP
應僅在該項目調用一次。現在,如果我從我的main.cpp
調用此宏,並且只包含中的easylogging++.h
- 一切正常。但是,當我嘗試在更多的.cpp
文件中包含easylogging++.h
時,我遇到未定義引用的鏈接器問題(就好像該宏未被調用一樣)。 如果我將此宏的調用放在main.cpp
之前的字母文件中,則鏈接器將正常解析所有內容。在鏈接階段,對象按字母順序排序。
有沒有一種很好的方法來解決這個問題?或者我將不得不在鏈接時強制執行不同順序的文件?
我對這類問題沒有多少經驗,嘗試過使用Google搜索,找不到解決方案。如果已經有類似的問題,抱歉,找不到它。
感謝您的幫助!
預處理器宏和鏈接器錯誤很少連接。請嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示,並向我們展示您獲得的實際錯誤(以文本形式複製粘貼,完整,完整且沒有任何修改)。 –
關於術語的說明,預處理器宏不是「調用」,而是*擴展*。簡而言之,在C++解析器讀取源代碼之前,宏的調用在源代碼中由宏的擴展主體*替換*。 –
嗨,感謝您的評論,這不是一個小項目,所以我會盡量花一些時間來創建一個最簡單的例子,並在這裏複製輸出。 – paperplane