導航:首頁 > 程序命令 > 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外部命令無法解析相關的資料

熱點內容
怎樣避免程序員入獄 瀏覽:854
蘋果方塊消除安卓叫什麼 瀏覽:533
安卓世界征服者2怎麼聯機 瀏覽:295
國企招的程序員 瀏覽:967
哪個app可以看watch 瀏覽:512
dns備用什麼伺服器 瀏覽:1002
中達優控觸摸屏編譯失敗 瀏覽:80
上海科納壓縮機 瀏覽:680
python工時系統 瀏覽:551
查好友ip命令 瀏覽:118
通達信python量化交易 瀏覽:506
cnc編程工程師自我評價 瀏覽:132
書本文件夾夾子怎麼安 瀏覽:803
如何更改編譯器的背景 瀏覽:86
linuxcp拷貝文件 瀏覽:610
我的世界如何屏蔽別人伺服器 瀏覽:909
單片機燒錄員 瀏覽:972
美國數據伺服器可以部署什麼業務 瀏覽:973
如何卸載伺服器中的ie 瀏覽:42
單片機必須學編程嗎 瀏覽:155