聪明的人猿 2024-06-05 20:26 采纳率: 88.9%
浏览 3
已结题

windows API按钮控件

简化后的代码如下


```c++

#include<Windows.h>
#include"resource.h"
INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM, LPARAM lParam)
{
    BOOL bRet = TRUE;
    return bRet;
}

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInStance, LPSTR lpCmdLine, int nCmdShow)
{
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc);
    return 0;
}
尝试过修改project的属性从“控制台”到“窗口”按如下方式[]()https://blog.csdn.net/mazamu/article/details/105962340?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-105962340-blog-117396590.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-105962340-blog-117396590.235%5Ev43%5Epc_blog_bottom_relevance_base4
但还是报错
报错内容如下
严重性    代码    说明    项目    文件    行    禁止显示状态    详细信息
错误    LNK2019    无法解析的外部符号 _WinMain@16,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号    Project10    C:\Users\xhr1\source\repos\Project10\Project10\MSVCRTD.lib(exe_winmain.obj)    1        
严重性    代码    说明    项目    文件    行    禁止显示状态    详细信息
错误    LNK1120    1 个无法解析的外部命令    Project10    C:\Users\xhr1\source\repos\Project10\Debug\Project10.exe    1        
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-05 20:26
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来您的C++ Windows应用程序在编译时遇到了一些链接错误。这两个错误通常是因为程序缺少一个标准的WinMain入口点,这是Windows GUI应用程序所必需的。

    要解决这个问题,请按照以下步骤操作:

    1. 首先确认您的项目设置已经正确地将项目类型设为Windows应用程序。这应该已经在项目属性中完成,确保"Configuration Type" 设置为 "Application Type: Windows Console (/SUBSYSTEM:WINDOWS)"。

    2. 您的代码中有一个名为_tWinMain的函数,但是链接器正在寻找WinMain@16。为了修复此问题,您需要更改_tWinMainWinMain,并确保它具有正确的签名。以下是修正后的代码:

    // 注意这里去掉了_t前缀,并且参数类型和数量进行了调整
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
        DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc);
        return 0;
    }
    
    1. 如果您仍然遇到问题,可能是因为链接器找不到必要的库文件。请确保链接了正确的库文件,特别是user32.libkernel32.lib。这些库文件包含创建窗口和处理消息所需的功能。在项目的属性页中,找到链接器 -> 输入 -> 库依赖项,添加这两个库(通常是kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib)。

    完成以上步骤后,重新编译您的项目。这样应该可以解决LNK2019和LNK1120错误,让您的Windows API按钮控件应用正常运行。

    如果您还有其他疑问或者遇到新的问题,请随时告诉我。我会尽力提供帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月5日