C++ 在编译生成O文件时main被多次定义

时间:2023-02-04 11:41:49
../obj/bitcoind.o:在函数‘main’中:
bitcoind.cpp:(.text.startup+0x0): `main'被多次定义
../obj/bitcoin-cli.o:bitcoin-cli.cpp:(.text.startup+0x0):第一次在此定义
../obj/bitcoin-tx.o:在函数‘main’中:
bitcoin-tx.cpp:(.text.startup+0x0): `main'被多次定义
../obj/bitcoin-cli.o:bitcoin-cli.cpp:(.text.startup+0x0):第一次在此定义
../obj/bitcoin.o:在函数‘main’中:
bitcoin.cpp:(.text.startup+0xc0): `main'被多次定义
../obj/bitcoin-cli.o:bitcoin-cli.cpp:(.text.startup+0x0):第一次在此定义

在生成.o文件时出现错误,该问题是什么原因?怎样解决?

6 个解决方案

#1


被多次定义...
那你只定义一次不行么?

#2


g++编译命令是什么?  或者代码定义了多个main入口函数?

#3


删除一个main函数

#4


在你的一个工程中的多个cpp文件中都有main函数, 就会这样.  你要保证编译的所有cpp文件中只能有一个main函数.  因为c++程序入口只能有一个.

#5


一个CPP 会被编译为 一个OBJ对象文件 
每个OBJ又会被装进 其它二进制文件
这个二进制是一个整体 一个整体的DLL或者 EXE  如果DLL中要调用其它LIB 则由这些LIB装入OBJ 以供调用

装入时同时会包含各个函数的所属类型和索引标识 像main这种全局类型的函数 是不会有类类型的 但也有void_cdel的标识
多重定义很明显要出问题 真到了调用main 函数的时候 怎么找要调用哪一个main??? main比较特殊 是不能重载的一个函数

错误 9 error C2731: “main”: 无法重载函数[/code] 


要不就删去多余的main
要不就使用宏做屏蔽
也可以删除掉其它包含多余main的cpp 如果你目前的功能 不需要使用这些cpp对应的OBJ的话

#6


main()函数多写了一个

#1


被多次定义...
那你只定义一次不行么?

#2


g++编译命令是什么?  或者代码定义了多个main入口函数?

#3


删除一个main函数

#4


在你的一个工程中的多个cpp文件中都有main函数, 就会这样.  你要保证编译的所有cpp文件中只能有一个main函数.  因为c++程序入口只能有一个.

#5


一个CPP 会被编译为 一个OBJ对象文件 
每个OBJ又会被装进 其它二进制文件
这个二进制是一个整体 一个整体的DLL或者 EXE  如果DLL中要调用其它LIB 则由这些LIB装入OBJ 以供调用

装入时同时会包含各个函数的所属类型和索引标识 像main这种全局类型的函数 是不会有类类型的 但也有void_cdel的标识
多重定义很明显要出问题 真到了调用main 函数的时候 怎么找要调用哪一个main??? main比较特殊 是不能重载的一个函数

错误 9 error C2731: “main”: 无法重载函数[/code] 


要不就删去多余的main
要不就使用宏做屏蔽
也可以删除掉其它包含多余main的cpp 如果你目前的功能 不需要使用这些cpp对应的OBJ的话

#6


main()函数多写了一个