在函数__tmaincrtstartup中引用的未解析的外部符号_WinMain@16
error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___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): error LNK2019:函数
___tmainCRTStartup
引用的外部符号_WinMain@16
无法解析
我该怎么办?
这是链接器的问题。
尝试更改属性->链接器->系统->子系统(在Visual Studio中)。
从Windows (/SUBSYSTEM: Windows)到控制台(/SUBSYSTEM: Console)
这个帮了我
正如其他人提到的,您可以将子系统更改为Console,错误将消失。
或者如果你想保留Windows子系统,你可以暗示你的入口点是什么,因为你还没有定义___tmainCRTStartup
。可以在Properties -> Linker ->命令行中添加以下内容:
/条目:"mainCRTStartup"
如果你有这个问题,正在使用Qt -你需要链接qtmain。
除了像其他人所说的将其更改为Console (/SUBSYSTEM:CONSOLE)
之外,您可能需要在Properties -> Linker -> Advanced -> entry point中更改入口点。设置为mainCRTStartup。
如果没有指定的话,Visual Studio可能会搜索WinMain函数而不是main。
包括<tchar.h>
,它有一行:
#define _tWinMain wWinMain
如果你使用Unicode字符集,但是条目没有设置,你可以指定/entry:"wWinMainCRTStartup"
如果你真的想使用_tWinMain()而不是main()确保您的项目相关配置包含
- 链接器->系统->子系统=> Windows(/SubSystem: Windows)
- C/c++ ->预处理器->预处理器定义=>将_CONSOLE替换为_WINDOWS
-
在c/cpp文件中定义了_tWinMain(),添加:
#include <Windows.h>
#include <tchar.h>
我没有看到main函数
请确保它具有主要功能。
的例子:
int main(int argc, TCHAR *argv[]){
}
希望它能很好地工作。:)
如果你的项目是Dll,那么这种情况可能是链接器想要构建一个控制台程序。打开项目属性。选择常规设置。选择配置类型Dynamic Library there(.dll)
我不确定在哪里张贴我的这个答案,但我认为这是正确的地方。我今天遇到了这个错误,切换子系统并没有改变什么。
将64位库文件更改为32位(x86)对我来说很有用,我希望它能帮助到那里的人!
您试图将该源文件转换为可执行文件,这显然是不可能的,因为没有定义强制入口点main
函数。添加一个文件main.cpp并定义一个main函数。如果您正在使用命令行(我对此表示怀疑),则可以将/c
添加为只编译而不链接。这将只生成一个对象文件,它需要链接到静态或共享库或应用程序中(在这种情况下,您需要一个定义了main的对象文件)。
_WinMain
是Microsoft在链接时对main
的名称。
还有:你还没有运行代码,你正在编译(并链接)它。c++不是解释性语言
如果你正在使用CMake,你也可以得到这个错误,当你设置SET(GUI_TYPE WIN32)
在控制台应用程序
上述广博的建议将在99.99%的情况下解决问题。我很幸运,他们没有。在我的例子中,结果是我包含了一个来自不同Windows项目的头文件。果然,在那个文件的最下面,我找到了这个指令:
#pragma comment(linker, "/subsystem:Windows")
不用说,删除这一行就解决了我的问题。
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 类模板上一个特定函数的未解析外部符号
- LNK2001:未解析的外部符号public:static类std::vector