错误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。