c - 错误 LNK2019 和 LNK1120 (Visual Studio 2008)

标签 c visual-studio-2008

项目: 03 - Criacao de funcoes e estruturas de decisao
文件: Criacao de funcoes e estruturas de decisao.cpp

include <iostream>
include <stdlib.h>
include <stdio.h>  

using namespace std;  

int soma(int a, int b) {
    return a+b;  
}

void mensagem() {
    printf ("Hello World!");
    printf ("soma: %d", soma(10,20));
}

错误:

Error 1 03 - Criacao de funcoes e estruturas de decisao error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib
Error 2 03 - Criacao de funcoes e estruturas de decisao fatal error LNK1120: 1 unresolved externals C:\Users\geovani.moura\Desktop\c++\Debug\03 - Criacao de funcoes e estruturas de decisao.exe

因为出现这个错误?

最佳答案

一般来说,每个 C 程序都必须定义 main()与外部链接恰好一次。

您缺少main() .

如果您的预期入口点是 void mensagem() ,您应该从 main() 内部调用它。 [尽管有多种方法可以定义另一个入口点,但它们是非标准和/或不可移植的——只需坚持 main() ]

一个简单的例子是:

int main()
{
    mensagem();
    return EXIT_SUCCESS;
}

int main( int argc, char* argv[] )
{
    mensagem();
    return EXIT_SUCCESS;
}

注意:在此代码的上下文中,main()应列在您创建的两个函数之后。要更改函数的顺序,一种可能是在所有函数之前声明原型(prototype)。另外,EXIT_SUCCESS定义于 stdlib.h ,它已包含在您的代码中。

没有stdlib.hEXIT_SUCCESS :

int main()
{
    mensagem();
    return 0;
}

旁注:您正在混合 C/C++ header 。 <stdio.h>就是你想要的printf() 。此外,您可能会发现输出的格式不符合您的预期。您可以使用 '\n' (换行)字符输出新行。

关于c - 错误 LNK2019 和 LNK1120 (Visual Studio 2008),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876182/

相关文章:

python - 用 C 嵌入 Python

c - 初始化数组 - 警告 : assignment makes integer from pointer without a cast

c - 尝试在 Mac 终端中编译 hello world C 程序时出现 Permission Denied 错误

c# - Visual Studio 设计器总是试图更改我的控件

c++ - 访问违规写入位置,在我的循环中

java - 如何开始黑莓开发

c# - 尝试进行分层更新会导致错误 "A foreign key value cannot be inserted"

c - 打印精度

c - 将 malloc() 与二维数组一起使用,未得到预期结果

c++ - Project Euler #8 c++ 来自初学者