C++致命错误LNK1120:1个未解决的外部引用

23

这个错误是什么原因造成的?我谷歌了一下,发现前几个解决方案都说库或主函数有问题,但在我的情况下它们似乎都没问题,我甚至重新打了一遍!可能是什么原因导致的呢?

这可能有所帮助:

MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol WinMain@16 referenced in function __tmainCRTStartup

#include <iostream>
using namespace std;
int main()
{
    const double A = 15.0, 
                 B = 12.0, 
                 C = 9.0;
    double aTotal, bTotal, cTotal, total;
    int numSold;

    cout << "Enter The Number of Class A Tickets Sold: ";
    cin >> numSold;
    aTotal = numSold * A;

    cout << "Enter The Number of Class B Tickets Sold: ";
    cin >> numSold;
    bTotal = numSold * B;

    cout << "Enter The Number of Class C Tickets Sold: ";
    cin >> numSold;
    cTotal = numSold * C;

    total = aTotal + bTotal + cTotal;

    cout << "Income Generated" << endl;
    cout << "From Class A Seats $" << aTotal << endl;
    cout << "From Class B Seats $" << bTotal << endl;
    cout << "From Class C Seats $" << cTotal << endl;
    cout << "-----------------------" << endl;
    cout << "Total Income: " << total << endl;

    return 0;
}

发布完整的错误信息。哪个是未解决的符号? - K-ballo
未解析的符号是什么?请提供完整的错误文本。 - Lou
你还应该会得到 LNK2001 错误列表,列出了未解决的内容。那些是什么? - shf301
13个回答

33

来源于MSDN

当您创建项目时,选择了错误的应用程序类型。在被询问是控制台应用程序、窗口应用程序、DLL 还是静态库时,您选择了错误的选项:窗口应用程序。

请返回重新开始,单击 文件 -> 新建 -> 项目 -> Win32 控制台应用程序 -> 命名您的应用程序 -> 单击下一步 -> 单击应用程序设置。

对于应用程序类型,请确保已选择“控制台应用程序”(这一步是至关重要的)。

Windows 应用程序的主函数称为 WinMain,DLL 的主函数称为 DllMain,.NET 应用程序的主函数称为 Main(cli::array ^),而静态库没有主函数。只有在控制台应用程序中,主函数才被称为 main。


1
哈!你说得对,我点错了下面那个~ 不过看起来完全一样,你怎么能分辨出来呢? - Howdy_McGee

14

我曾经遇到过这个错误。

原来是我把程序命名为ProgramMame.ccp而不是ProgramName.cpp

这种错误很容易犯...

希望这能帮上忙。


9

我的问题是int Main()而不是int main()

祝好运


2

好像您缺少某个库的引用。我曾经遇到过类似的错误,通过添加对#pragma comment(lib, "windowscodecs.lib")的引用来解决了问题。


1
我在bar.hpp中编写了一个原型成员函数void foo() const;,但忘记在类命名空间中定义它的函数体,导致出现了这个错误。我最初在bar.cpp文件中编写了foo() const { /* body */ },而不是bar::foo() const { /* body */ }

1
在我的情况下,头文件和 .cpp 文件中的参数类型不同。在头文件中,类型是 std::wstring,而在 .cpp 文件中它是 LPCWSTR

1
我的情况是:我定义了类析构函数的原型,但忘记定义具体实现。
class SomeClass {
    ~SomeClass(); //error
};

class SomeClass {
    ~SomeClass(){}; //no error
}

0
在我的情况下,这个错误是因为我添加的文件没有在 .vcproj 文件中引用。

0

你必须引用它。为此,请在“解决方案资源管理器”中打开项目的快捷菜单,然后选择“引用”。在“属性页”对话框中,展开“常规属性”节点,选择“框架和引用”,然后选择“添加新引用”按钮。


0
我在没有定义main()函数时遇到了这个特定的错误。请检查main()函数是否存在,或者按照Timothy上面所描述的逐个字母检查函数名称,或者检查包含main函数的文件是否已经包含在您的项目中。

我正在尝试在VS中使用cpp编写一些汇编代码。将一个空的source.cpp文件添加到我的source.asm源文件中有些帮助。但是LNK2019和LNK1120错误仍然存在。然后我在空的cpp文件中添加了int main()函数来消除失败信息,但现在它只运行cpp文件而未触及asm文件。 - mortenlund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接