當您在包含模板化數據成員的MSVC的公共接口中創建結構時,您將在編譯時收到警告。在MSVC中導出模板實際上有什麼好處?
一種解決方案是在DLL中導出模板類型(請參閱this知識庫文章)。
我在問這個問題,因爲我不知道爲什麼要導出類型?
如果您不導出它,則.hpp文件將擁有足夠的信息來自行生成該類型。
如果它是一個標準庫類型,並且您有兩個或多個dll的每個潛在鏈接到不同版本的標準庫,您現在已在您的代碼中具有相同類型的多個二進制版本。
這是什麼意思?如果實際上有兩種不同的版本,編譯器認爲它們是相同的,但是#2在運行時可能會導致崩潰,但是由於缺少符號,#2可能會無法加載?
我完全脫離基地嗎?在我看來,最好的選擇是忽略MSVC的警告。
編輯:沒有人指出了這一點,但我知道並明白,如果你有你的模板中的靜態,並希望在單個應用程序內的DLL的所有用途共享這些靜態:您必須在這種情況下,導出模板實例化。這對於像單物一樣的物體和記錄器等是很重要的。
我們在這裏禁用了該警告,並且從來沒有出現問題。可能只是運氣強硬。 – stijn
最終,禁用警告也是我們同時使用的路線。 – lefticus