繁体   English   中英

Visual C++ 没有编译我的代码

[英]visual C++ is not compiling my code

这段代码:

#include <windows.h>
int WINAPI _WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow);

此输出中的结果:

LNK1120: 1 unresolved externals

LNK2019: unresolved external symbol _WinMain@16 reference in function "int _cdecl invoke_main (void)" (? invoke_main@@Y AHZX)

有人可以告诉我这是什么意思以及如何解决吗?

LNK1120:1 个未解析的外部

链接您的程序时,一个或多个符号未解析。 稍后再谈。

LNK2019: 函数“int _cdecl invoke_main (void)”中未解析的外部符号 _WinMain@16 引用(?invoke_main@@Y AHZX)

将缺失的符号之一命名为_WinMain@16 最后的@16 本身意味着一个相当长的答案。 最好通过您选择的网络搜索来查找“Name Mangling”和“Calling Convention”。

至于为什么缺少_WinMain

int WINAPI _WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow);

只声明程序员向编译器保证在其他地方

int WINAPI _WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{
    // does stuff
    return resultOfStuff;
}

存在。

编译器会对这个承诺非常满意并继续前进,相信程序员会在文件或其他文件中的某个稍后点做好。

一旦所有代码都编译成目标文件,链接器就会出现并尝试将这些片段组合到一个程序或库中。 它遍历所有对象文件,将承诺的名称与承诺的项目的地址相匹配。

如果程序员在撒谎,那么链接器将找不到承诺的函数,将没有可用的地址,并将返回一条错误消息,指出该函数丢失。

解决方法:实现功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM