错误LNK2019:无法parsing的外部符号_WinMain @ 16在函数中引用___tmainCRTStartup

虽然我运行简单的代码如下,我有两个错误,如下所示:

#include <iostream> #include <string> using namespace::std; template <class Type> class Stack { public: Stack (int max):stack(new Type[max]), top(-1), maxsize(max){} ~Stack (void) {delete []stack;} void Push (Type &val); void Pop (void) {if (top>=0) --top;} Type& Top (void) {return stack[top];} //friend ostream& operator<< (ostream&, Stack&); private: Type *stack; int top; const int maxSize; }; template <class Type> void Stack <Type>:: Push (Type &val) { if (top+1<maxsize) stack [++top]=val; } 

错误:

MSVCRTD.lib(crtexew.obj):错误LNK2019:未parsing的外部符号_WinMain@16在函数中引用___tmainCRTStartup

我该怎么办?

这是一个链接器的问题。

尝试改变属性 – >连接器 – >系统 – >子系统(在Visual Studio中)。

Windows(/ SUBSYSTEM:WINDOWS)控制台(/ SUBSYSTEM:CONSOLE)

这个帮了我

正如其他人提到的,你可以将子系统更改为控制台,错误将消失。

或者,如果您想保留Windows子系统,则只需提示您的入口点是什么,因为您尚未定义___tmainCRTStartup 。 您可以通过将以下内容添加到属性 – >链接器 – >命令行来执行此操作:

/ ENTRY: “mainCRTStartup”

这样你摆脱了控制台窗口。

如果你有这个问题,并正在使用Qt – 你需要链接qtmain.lib或qtmaind.lib

如果使用Unicode字符集,但没有设置条目,则可以指定/ ENTRY:“wWinMainCRTStartup”

包含以下行的<tchar.h>

 #define _tWinMain wWinMain 

我没有看到主要的function。

请确保它具有主要function。

例如:

 int main(int argc, TCHAR *argv[]){ } 

希望它运作良好。 🙂

你试图把源文件转换成可执行文件,这显然是不可能的,因为没有定义强制入口点, main函数。 添加一个文件main.cpp并定义一个主函数。 如果你正在命令行(我怀疑),你可以添加/c只编译,而不是链接。 这将只产生一个目标文件,这个目标文件需要被链接到一个静态的或者共享的lib或者一个应用程序中(在这种情况下,你需要一个主要定义的oject文件)。

_WinMain是微软在链接时的main名字。

另外:你还没有运行代码,你正在编译 (和链接)它。 C ++不是一种解释型语言。

如果你的项目是Dll,那么情况可能是链接器想要构build一个控制台程序。 打开项目属性。 select常规设置。 selectconfigurationtypesdynamic库那里(.dll)。

如果您正在使用CMake,则在控制台应用程序上设置SET(GUI_TYPE WIN32)时也可能会出现此错误。

我不知道在哪里发布我的答案,但我认为这是正确的地方。 今天我遇到了这个错误,切换子系统并没有改变。

将64位lib文件更改为32位(x86)为我做了窍门,我希望它能帮助那里的人!

除了像其他人所说的那样将其更改为Console (/SUBSYSTEM:CONSOLE) ,您可能还需要在属性 – >链接器 – >高级 – >入口点中更改入口点。 将其设置为mainCRTStartup

看来,如果您没有另外指定,Visual Studio可能会searchWinMain函数而不是main。