Visual Studio中出現
Warning LNK4075: 忽略“/INCREMENTAL”(由於“/LTCG”規範)
LINK : 已指定 /LTCG,但不需要生成代碼;從鏈接命令行中移除 /LTCG 以提高鏈接器性
【解決方案】
【Debug模式下】
在 “項目” -> “屬性” -> “常規" -> "全程序優化" 中選擇“無全程序優化”。
在 “項目” -> “屬性” -> “配置屬性" -> "C/C++" -> “優化” 中關閉“全程序優化”,選擇“否”。
當多個項目共用一個解決方案時,注意每個項目都要操作。
【Release模式下】
在 “項目” -> “屬性” -> “常規" -> "全程序優化" 中選擇選擇“使用鏈接時間代碼生成”。
在 “項目” -> “屬性” -> “配置屬性" -> "C/C++" -> “優化” 中關閉“全程序優化”,選擇“是”。
【Debug模式下】“/INCREMENTAL”
【Release模式下】“/INCREMENTAL:NO”
當多個項目共用一個解決方案,明明編譯時項目中“xxxx.lib”已經生成成功,其中一個項目想要引用這個xxxx.lib,使用了#pragma comment(lib, "xxxx.lib")卻還是報錯:“……無法打開xxxx.lib”。
【解決方案】
檢查“項目依賴項”和“項目生成順序”是否有異;
檢查“屬性” -> “配置管理器” -> 檢查“配置”+“平臺”+“是否生成”;
檢查 “屬性” -> “配置屬性" -> "常規" -> "輸出目錄" + "中間目錄" 是否有異
右擊想要引用這個xxxx.lib的項目,在 “屬性” -> “配置屬性" -> "鏈接器" -> "常規" -> "附加庫目錄" -> 添加LIB文件所在位置。
例如:$(SolutionDir)$(Platform)\$(Configuration)\
“項目” -> “屬性” -> “配置屬性" -> "C/C++" -> “代碼生成” -> “運行庫” -> 【Release模式選多線程DLL,Debug模式選多線程調試DLL】
XXXXProcess.cpp(7): warning C4273: “xxxx”: dll 鏈接不一致
xxxx.h(37) : 參見“public:xxx m_bIsSingleThread”的前一個定義
xxx.cpp(7): error C2491: “xxxx::m_bIsSingleThread”: 不允許 dllimport 靜態數據成員 的定義
【解決方案】
#ifdef XXXXXAPP_EXPORTS
#define XXXXXXAPP_API __declspec(dllexport)
#else
#define XXXXXXAPP_API __declspec(dllimport)
#endif
“項目” -> “屬性” -> “配置屬性" -> "C/C++" -> “預處理器” -> “預處理器定義”中缺少XXXXXAPP_EXPORTS或者有誤。