LNK2005 _main 已经在 test0208.obj 中定义 / LNK1169 找到一个或多个多重定义的符号

简介: LNK2005 _main 已经在 test0208.obj 中定义 / LNK1169 找到一个或多个多重定义的符号
错误  LNK2005 _main 已经在 test0208.obj 中定义  
错误  LNK1169 找到一个或多个多重定义的符号

当我们遇到这个问题的时候先不要慌张,如果是英文报错先把翻译成中文,当然,如果你英语够好当我没说。先理清代码的逻辑,确保不是代码二逻辑出现错误。根据逻辑去寻找错误,一步步的断点调试,相信很快就可以找出错误。记住,断点调试很重要。

image.png


出现这类错误的原因基本上都是在同一个文件下的.cpp文件中有main函数没有注释(违背了一个项目中只能有一个主函数(main)的要求,任何代码最先开始执行的地方都是从主函数开始执行)

&&&&&&##****************##&&&&&&

例如我要运行Tonumber,然而他抱错了,错误的原因就是同个项目下的test0208.cpp中还有main函数没有注释。


你也可以这样认为,vs2019就是一个进程,.cpp文件的主函数就是一个主线程,用来分配线程。主进程和主线程只有一个,怎么可能同属运行多个主线程,但是python中就可以有多个主函数,可能python中单个py文件是一个吧。我对C++底层的运行也不是太清楚,清楚的小伙伴可以在评论区打出来奥。image.png

或者单机右键选择属性将 从生成中排除选择为 是也科技解决这个问题,**两种任选一种即可解决**

如何让一个项目中运行多个cpp文件


下面不用管,上面可以将问题解决了。写下面是因为只发上面呢你们就看不见这篇文章了,推荐受影响,现在对这个算法真是无语了,劝退一大批博客写主。


C++ 基本语法

C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。

对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。

类 - 类可以定义为描述对象行为/状态的模板/蓝图。

方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。

即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。

C++ 程序结构

让我们看一段简单的代码,可以输出单词 Hello World。


实例

#include <iostream>
using namespace std;
// main() 是程序开始执行的地方
int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

接下来我们讲解一下上面这段程序:

C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 。

下一行 using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。

下一行 // main() 是程序开始执行的地方 是一个单行注释。单行注释以 // 开头,在行末结束。

下一行 int main() 是主函数,程序从这里开始执行。

下一行 cout << “Hello World”; 会在屏幕上显示消息 “Hello World”。

下一行 return 0; 终止 main( )函数,并向调用进程返回值 0。

编译 & 执行 C++ 程序

接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:


打开一个文本编辑器,添加上述代码。

保存文件为 hello.cpp。

打开命令提示符,进入到保存文件所在的目录。

键入 'g++ hello.cpp ‘,输入回车,编译代码。如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out 可执行文件。

现在,键入 ’ a.out’ 来运行程序。

您可以看到屏幕上显示 ’ Hello World '。

$ g++ hello.cpp
$ ./a.out
Hello World

请确保您的路径中已包含 g++ 编译器,并确保在包含源文件 hello.cpp 的目录中运行它。


您也可以使用 makefile 来编译 C/C++ 程序。


C++ 中的分号 & 语句块

在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。


例如,下面是三个不同的语句:

x = y;
y = y+1;
add(x, y);

语句块是一组使用大括号括起来的按逻辑连接的语句。例如:

{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

C++ 不以行末作为结束符的标识,因此,您可以在一行上放置多个语句。例如:

x = y;
y = y+1;
add(x, y);

等同于

x = y; y = y+1; add(x, y);

C++ 标识符

C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。

C++ 标识符内不允许出现标点字符,比如 @、& 和 %。C++ 是区分大小写的编程语言。因此,在 C++ 中,Manpower 和 manpower 是两个不同的标识符。


下面列出几个有效的标识符:


mohd zara abc move_name a_123

myname50 _temp j a23b9 retVal


C++ 关键字

下表列出了 C++ 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。


asm else new this

auto enum operator throw

bool explicit private true

break export protected try

case extern public typedef

catch false register typeid

char float reinterpret_cast typename

class for return union

const friend short unsigned

const_cast goto signed using

continue if sizeof virtual

default inline static void

delete int static_cast volatile

do long struct wchar_t

double mutable switch while

dynamic_cast namespace template

目录
相关文章
|
1月前
|
网络协议 C++
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
|
1月前
|
存储 API Windows
MASM32连接程序时error A2006: undefined symbol : u
MASM32连接程序时error A2006: undefined symbol : u
|
5月前
|
C++
Qt定义属性类信息报错‘Qstring‘ was not declared in this scope; did you mean ‘xxx‘?并且还有有一堆报错,问题还出现在moc文件
Qt定义属性类信息报错‘Qstring‘ was not declared in this scope; did you mean ‘xxx‘?并且还有有一堆报错,问题还出现在moc文件
99 0
|
C++ Windows
VS2019错误:_main已经在.obj中定义,找到一个或多个重定义符号
VS2019错误:_main已经在.obj中定义,找到一个或多个重定义符号
1548 0
【C++】 --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
【C++】 --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
135 0
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
463 0
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
159 0
libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
138 0
error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
|
Windows
error LNK2019: 无法解析的外部符号 _WinMain,在函数_tmainCRTStartup中被引用
error LNK2019: 无法解析的外部符号 _WinMain,在函数_tmainCRTStartup中被引用
226 0
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
255 0