LNK2019 无法解析的外部符号 WinMain,该符号在函数 “int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ) 中被引用

本文介绍了解决LNK2019错误的方法,包括调整项目设置以正确指定入口函数,如从WinMain更改为mainCRTStartup,确保C语言程序能够正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LNK2019 无法解析的外部符号 WinMain,该符号在函数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中被引用
这个报错网上查了很多,大概原因是:
c语言运行时找不到适当的程序入口函数,
一般情况下,如果是windows程序,那么WinMain是入口函数,在VS中新建项目为“win32项目”
如果是dos控制台程序,那么main是入口函数,在VS中新建项目为“win32控制台应用程序”
而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。
网上找到的解决方法(有点乱,建议跳过这里,直接看我写的总结):
方法一:
[XXX属性] -> [配置属性] -> [链接器]-> [高级],在[入口点]里写入mainCRTStartup,确定即可
方法二:
把应用程序类型改为控制台类型:
Go to “Linker settings -> System”. Change the field “Subsystem” from “Windows” to “Console”. Done.
中文版:VC左边,解决方案窗口,在项目上点右键,选择属性->配置->链接->系统,将子系统的window设置成console.
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

//新建数据库文件
void DataBase::CreateDataBase(QSqlDatabase &database, QString dbpath, QString connectName)
{
	if (QSqlDatabase::contains(connectName))//connectName是连接名
	{
		database = QSqlDatabase::database(connectName);//连接存在,绑定连接
	}
	else
	{
		//连接不存在,创建连接,创建数据库
		database = QSqlDatabase::addDatabase("SQLCipher", connectName);
		database.setDatabaseName(dbpath);
		database.setPassword("123");
	}

	if (!database.open())
{
//"打开数据库失败!"
}		
}
错误提示`LNK2019: 无法解析外部符号 WinMain`通常是当你试图链接生成的可执行文件(exe),但是缺少主入口点`WinMain`。在Windows平台下,`WinMain`是MFC(Microsoft Foundation Classes)程序的标准窗口回调函数,用于初始化应用程序的生命周期。 以下是可能导致此问题的一些原因和解决方法: 1. **未包含正确的头文件**: 确保你在`.cpp`文件中包含了`windows.h`和`mfc/appwin32.h`或其他相关的MFC头文件,这会声明`WinMain`函数。 ```cpp #include <windows.h> #include <mfcmfc/appwin32.h> ``` 2. **缺少MFC库**: 如果你是用MFC编写的,确保已经将MFC库(如`mfc10u.lib` 或 `msvcrt.lib`,取决于你的VS版本)添加到链接器输入中。 3. **静态链接还是动态链接**: 检查项目的配置是否选择了正确的链接模式。如果是静态链接,你可能需要包含`afxres.h`;如果是动态链接,确保已经添加了MFC库。 4. **主函数定义错误**: 检查`WinMain`函数的原型是否有误,应类似这样: ```cpp int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); ``` 注意`APIENTRY`和函数返回类型。 5. **混淆第三方库**: 如果你从外部库导入了`invoke_main`,确保它不是与`WinMain`冲突的名称。 如果以上步骤都检查过了,还有问题,可能是你的源代码有问题或者项目设置出现了遗漏。尝试清理并重新建立项目,或者检查最近的代码更改,看看是否有影响`WinMain`暴露的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值