導航:首頁 > 程序命令 > qt外部命令無法解析

qt外部命令無法解析

發布時間:2023-07-05 14:37:26

❶ C語言中顯示無法解析的外部命令

這是因為c和c++混編帶來的問題。

1,問題根源:c++是支持類和名字空間,函數重載等高級技巧的。以函數重載為例:

int Add(int a, int b)

int Add(int a, int b, int c)

這意味著不同的函數有同樣的名字(你寫的,都叫Add),但是同樣的名字會帶來混淆,所以使用了一種叫「名字毀壞」的技術,不同的編譯器有不同的毀壞規則,只要能實現區分就好。

所以,經過c++編譯器的處理,你的Add名字已經面目全非,比如我這里叫:

錯誤 LNK2019 無法解析的外部符號 "int __fastcall Add(int,int)" (?Add@@YIHHH@Z),函數 _main 中引用了該符號。

到這,都沒什麼,只不過名字變了一下,只要編譯器能處理正確就好。

但是,重點來了,你放了一個c文件進去,c語言,是不支持這些高級玩意兒的,名字也不會毀壞,這樣,一個毀壞一個還是原名,得,兩下對不上了。

2,解決辦法

解決辦法也是模式化的,當你聲明的變數或者函數在c文件實現的時候,在h文件里聲明的時候,用這樣的結構包含起來,無論有多少個函數,都可以放在一起。

#ifdef __cplusplus

extern "C" {

#endif

int Add(int, int);

//其他聲明

#ifdef __cplusplus

}

#endif

再編譯就不會出現Link錯誤了。

頭文件全文如下:

#pragma once

#ifdef __cplusplus

extern "C" {

#endif

int Add(int, int);

#ifdef __cplusplus

}

#endif

❷ 如何在Qt中使用全局變數,出現無法解析的

很多小夥伴在Qt編程時,不會使用全局變數,其實基本有兩種方式來定義使用全局變數,第一種是根據c/c++的extern來進行多文件的使用,第二種方法就是把全局變數放在類中,當做類靜態變數來使用,一般來說,第一種方式嚴重破壞了類的封裝,所以還是推薦第二種方式.下面給出簡單的示例:
1.先在一個.h文件中聲明一個類://c.h#ifndef C_H#define C_Hclass QPos{public:static int x; //注意關鍵字staticstatic int y;
};#endif //C_H2.在.cpp文件里類中的成員進行定義://c.cpp#include "c.h"int QPos::x = 10; //必須要在對應的.cpp文件中進行初始化,否則會被報錯!!int QPos::y = 20;3.然後就可以在其他文件中使用這些全局變數了.//m.cpp#include#include "c.h"m::m(QWidget *parent) : QWidget(parent)
{
ui.setupUi(this);
c::x= 50; /
c::y= 70;
...
}


切記對靜態變數必須的初始化必須要在類外進行,同時不能在.h頭文件中進行,應該在對應的.cpp中進行,否則會出現無法解析的錯誤.

閱讀全文

與qt外部命令無法解析相關的資料

熱點內容
matlab遺傳演算法適應度函數 瀏覽:129
製作linux系統鏡像 瀏覽:154
域名解析伺服器ip地址不能正常 瀏覽:845
程序員十萬個為什麼 瀏覽:535
維信卡卡貸app怎麼下載不了 瀏覽:919
qdim命令使用 瀏覽:873
截圖R命令 瀏覽:654
基於單片機的智能台燈設計 瀏覽:685
多餘app是怎麼兌換皮膚的 瀏覽:552
sql資料庫查詢表命令 瀏覽:551
簡單音樂網站源碼 瀏覽:644
運動健康app華為手錶怎麼連接 瀏覽:748
肌肉塑造全書pdf下載 瀏覽:796
安卓簡約拼圖用什麼軟體好 瀏覽:289
fx1n加密程序 瀏覽:844
淘客阿里雲伺服器 瀏覽:476
100壓縮打造 瀏覽:422
安卓手機怎麼和蘋果平板傳文件 瀏覽:973
開始選項卡中的頁眉和頁腳命令選項 瀏覽:424
pdf的字體怎麼改 瀏覽:856