Visual Studio -- 遇到的各類報錯的解決方案簡述

 

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或者有誤。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章