我目前正在eclipse中为c/c++项目(版本:露娜服务第2版(4.4.2))进行单元测试,最近我将我的cygwin升级到cygwin64,使其与c++17标准兼容,并且我的g++版本是g++ (GCC) 10.2.0,但是我无法在eclipse中构建我的测试套件,我已经设置了“C:\cygwin 64\bin”的环境路径,但我仍然会遇到以下错误。请您帮助我处理以下错误:生成我的项目后的控制台输出:生成所有的构建文件:
C:/Accurev/AngioJet_Development_ver1/CS/AngioJet/Firmware/src/ClinicalFeatures/door.cpp
Invoking: Cygwin C++ Compiler
g++ -DUNIT_TESTING - "C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/build/PicoZed_FSBL_bsp/ps7_cortexa9_0/include" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../testsupport/" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../testsupport/Source" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/src/Platform/Zynq7000" - I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/src/HostInterface" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/soup/treck/6_0_1_56/include" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../Einstein/src/Platform/Zynq7000" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../Einstein/src/Common" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/src/Common" -I"C:/Accurev/AngioJet_Development_ver1/CS/ut/testsuites/Firmware/hell/../../../../AngioJet/Firmware/src/ClinicalFeatures" -O0 -g -fprofile-arcs -ftest-coverage -Wall -c -fmessage-length=0 -MMD -MP -MF"src/door.d" -MT"src/door.d" -o "src/door.o" "C:/Accurev/AngioJet_Development_ver1/CS/AngioJet/Firmware/src/ClinicalFeatures/door.cpp"
Finished building: C:/Accurev/AngioJet_Development_ver1/CS/AngioJet/Firmware/src/ClinicalFeatures/door.cpp
Building target: helll.exe
Invoking: Cygwin C++ Linker
g++ -fprofile-arcs -o "helll.exe" ./src/door.o -lgcov -lbfd
/usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/ld: /usr/lib/gcc/x86_64-pc-cygwin/10/../../../../lib/libcygwin.a(libcmain.o): in function `main':
/usr/src/debug/cygwin-3.3.6-1/winsup/cygwin/lib/libcmain.c:37: undefined reference to `WinMain'
collect2: error: ld returned 1 exit status
make: *** [makefile:47: helll.exe] Error 1
07:05:17 Build Finished (took 4s.531ms)
`*
我已经卸载并重新安装了这些软件。此外,我已经建立了一个新的项目从零,这是建设罚款,但每当我试图构建我的项目,它不是建设。
在eclipse中进行单元测试时,我们将项目创建为c++项目,并导入下面提到的源文件,其结构如下:源文件- door.cpp,DOONA.h:
#include "global.h"
namespace lDOOR { void close( BasicTypes::UInt8 mode ); }
door.cpp:
#include "door.h"
void lDOOR::close(void)
{
//Normal Mode
close(BscMsg::NORMAL);
}
我们在由.cpp创建的文件中对.cpp文件中的上述函数进行单元测试,如下所示:
#include <cxxtest/TestSuite.h>
class door_TestSuite: public CxxTest::TestSuite {
public:
void setUp(){}
void teardown(){}
void testDoorLDoorClose()
{
BscMsg::UInt8 mode = 2;
lDOOR::close(mode);
TS_ASSERT_EQUALS();
}};
当我在cygwin终端上测试上面的代码时,它执行的很好。
发布于 2022-10-31 12:44:14
这意味着没有WinMain
函数,它是Windows程序的入口点。是的,令人困惑。您可以选择将程序构建为控制台程序或windows程序。在控制台程序中,入口点是main
(和整个计算世界一样),但是在windows程序中,它是WinMain
。关于This问题有一个很好的答案,但您需要将程序的类型切换到控制台,或者(如果您的程序正在创建和使用windows)添加一个WinMain
函数。
很抱歉,如果这让人困惑,那么很难区分Windows、OS和windows (程序类型)。而且,我在这个问题上的知识都来自VSCode,所以可能是完全或部分错误的。
TLDR:要么添加一个WinMain
函数,要么切换到将您的程序构建为一个windows程序。
https://stackoverflow.com/questions/74262036
复制相似问题