C++ 如何解决C++;在Dev C++;

C++ 如何解决C++;在Dev C++;,c++,C++,在设计头文件后,我试图编译从电子书中获得的类的主体,但收到以下错误消息: [链接器错误]c:/crossdev/src/mingw-w64-svn/mingw-w64-crt/crt/crt0_c.c:18:未定义对`WinMain@16" 文件:C:\Users\Chuks-Joe\Desktop\collect2.exe 消息:[错误]ld返回了1个退出状态 头文件位于一个名为dice.h的单独文件中,类主体位于另一个名为dice.cpp的单独文件中。客户端程序也位于一个单独的文件testd

在设计头文件后,我试图编译从电子书中获得的类的主体,但收到以下错误消息:

[链接器错误]c:/crossdev/src/mingw-w64-svn/mingw-w64-crt/crt/crt0_c.c:18:未定义对`WinMain@16"

文件:C:\Users\Chuks-Joe\Desktop\collect2.exe

消息:[错误]ld返回了1个退出状态

头文件位于一个名为dice.h的单独文件中,类主体位于另一个名为dice.cpp的单独文件中。客户端程序也位于一个单独的文件testdice.cpp中

如何排列这些文件以及将.so文件放在何处,以便它们都可以链接在一起以便我的程序运行


我使用的编译器是。

如果不看代码,很难判断。您可以查看链接器在中的工作方式。在您的情况下,错误很可能来自以下原因之一:

  • 您试图使用在头文件中声明的函数或方法,但忘记在源文件中定义
  • 您仅使用
    testdice
    的对象文件调用链接器,而忘记了
    dice
    的对象文件
  • 未定义的函数是您的吗?如果没有,则很可能需要向链接器添加外部库

要缩小范围,请尝试使用
testdice.cpp
中定义的其他函数。如果这会导致更多的链接器错误,那么很可能您没有将所有内容链接在一起。如果没有添加更多错误,则很可能忘记定义函数,或者原型在源文件和头文件中略有不同

要使代码作为可执行文件链接,它必须具有
main()
(或
WinMain()
GUI程序)入口点。在C++中,一个类本身不是一个完整的程序,它是从主()/<代码>函数开始的。 出于某种原因,即使对于非GUI应用程序,MinGW链接器也会抱怨缺少
WinMain()
,而不是
main()
,但两者都会解析链接

通常必须提供
main()
WinMain()
函数,但在使用内部提供该函数的应用程序框架(通常是GUI)时除外

在大多数情况下,要使用类,必须实例化该类的对象,并通过该实例调用其成员函数。静态成员函数不需要对象实例

例如:

// main.cpp
#include <iostream>
#include "dice.h"

int main()
{
    cDice myDie ;
    std::cout << "Throw = " << myDie.roll() ; 
}
//main.cpp
#包括
#包括“dice.h”
int main()
{
cDice-myDie;

std::cout Dev-C++不是编译器只要确保您正确创建了类,并在cpp的顶部添加#include“dice.h”@lightness racesinorbit:不是重复的,这是一个非常特殊的实例,问题是程序没有
main()
winMain()的意义上是“不完整的”
entry point。感谢朋友们迄今为止的帮助。该类现在正在工作。但现在面临的新问题是,类实现和试图运行的程序必须在同一个文件中才能工作。因此,请问,我该怎么办?@ChuksJoeOrjiakor:您应该做的也许是发布一个新问题。但是,您可能会这样做通过搜索“单独编译和链接”来避免这种情况。嗨,老板,我已经按照你的建议做了,我非常感谢你对这篇文章的评论。谢谢