导航:首页 > 程序命令 > 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外部命令无法解析相关的资料

热点内容
js表格即时编译 浏览:302
51单片机串口拓展 浏览:305
重装系统后加密图片损坏 浏览:463
电脑怎么放大缩小app窗口 浏览:523
教育十APP学校怎么更改 浏览:821
空调外机压缩机热保护 浏览:754
winlinux双系统卸载 浏览:239
如何对安卓应用反编译 浏览:410
鲲鹏pc服务器是什么 浏览:572
一级防震梁箍筋加密 浏览:928
linuxxampp64位 浏览:728
西安哪个app能买到东西 浏览:457
eps命令键 浏览:38
塑料文件夹的尺寸 浏览:210
君威压缩机电磁阀 浏览:945
安卓6手机为什么不能用app 浏览:860
什么java编译器支持中文 浏览:564
香港服务器如何做代理 浏览:201
pdf写入 浏览:986
高尔夫电台怎么添加到文件夹 浏览:239