tft每日頭條

 > 生活

 > c 類地址默認的子網掩碼是

c 類地址默認的子網掩碼是

生活 更新时间:2025-01-11 19:59:06

最近在做Qt-vs項目時遇到這個問題,最初以為是比較經典的庫引用問題,在反複的查找工程配置信息時,并沒有發現什麼特别的問題。在網上找了半天,也沒有發現特别對症的方法,所以總結一下這個工程奇怪的現象。

環境:VS2017、Qt5.12.4、QtVSTool2.4.2

問題現象:

第一次編譯,出現問題,如果第二次不選擇重新生成,而是選擇生成,則系統可以正确編譯。當再次選擇重新生成時,重複出現如下問題。

c 類地址默認的子網掩碼是(LINK:error)1

1>MusicTimer.vcxproj -> E:\Work\MusicTimer\x64\Debug\MusicTimer.EXE

1>LINK : error LNK2001: 無法解析的外部符号 WinMainCRTStartup

1>E:\Work\MusicTimer\x64\Debug\\MusicTimer.exe : fatal error LNK1120: 1 個無法解析的外部命令

1>已完成生成項目“MusicTimer.vcxproj”的操作 - 失敗。

========== 全部重新生成: 成功 0 個,失敗 1 個,跳過 0 個 ==========

問題總結為:編譯器找不到入口函數,工程編譯失敗。

最開始以為是Qt的插件問題,因為該版本的Qt VS Tool 生成的工程是這種類型的,對這塊分析的比較少

c 類地址默認的子網掩碼是(LINK:error)2

在預處理定義的時候,使用的是“$(Qt_DEFINES_);%(PreprocessorDefinitions)”這個東西,并不是以前熟悉的“UNICODE _UNICODE WIN32 _ENABLE_EXTENDED_ALIGNED_STORAGE WIN64”這種定義。

所以問題不是太好找。

後來就使用了最笨的一種方法:逐步排除(将工程裡的源文件,逐步移除掉)。

首先,新建一個簡單的Qt程序,發現改程序可以正常的編譯執行。說明編譯環境和操作系統環境變量沒有問題。

然後,将工程裡的其他源文件全部移除,隻剩下Qt的main.cpp(如開頭的問題現象圖片)。

發現編譯仍然出現問題。于是,繼續移除問文件,将MusicTimer.rc資源文件移除。重新編譯

c 類地址默認的子網掩碼是(LINK:error)3

問題沒有了。反複重新生成,都沒有問題。但是新的問題是,軟件還需要圖标(生成的EXE沒有自定義圖标),沒有rc文件怎麼行。直接使用Qt的setWindowIcon()還實現不了這個功能。

資源文件内容如下,很簡單的内容。

c 類地址默認的子網掩碼是(LINK:error)4

經過反複的添加和移除MusicTimer.rc文件,問題和上述一樣。

在反複調試,運行過程中發現一個新的錯誤問題


c 類地址默認的子網掩碼是(LINK:error)5

目前猜測和這個有很大關系,但還不敢确定。後續再找時間繼續查找解決方法。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved