Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"

wxwidgets app in Visual Studio gives error "LNK2019 unresolved external symbol"

本文关键字:LNK2019 unresolved external symbol 错误 出错 中的 Studio wxwidgets 应用程序 Visual      更新时间:2023-10-16

我正在用C++和wxwidgets创建我的第一个程序。 当我尝试编译项目时,出现错误。

LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
LNK1120 1 unresolved externals

我已经在Visual Studio中编译了wxwidgets。

编译完成后,我在Visual Studio中创建了一个新的C++空项目。

我转到配置并添加了包含目录:

配置属性 -> C/C++ -> 常规 -> 其他包含目录:

C:\Users\user\source\repos\wxWidgets\include;C:\Users\user\source\repos\wxWidgets\include\msvc

配置属性 -> 链接器 -> 其他库目录:

C:\Users\user\source\repos\wxWidgets\lib\vc_lib

然后我添加了 2 个类,cApp 和 cMain。

cApp.h

#pragma once
#include "wx/wx.h"
#include "cMain.h"
class cApp : public wxApp
{
public:
cApp();
~cApp();
private: 
cMain* m_frame1 = nullptr;
public: 
virtual bool OnInit();
};

卡普.cpp

#include "cApp.h"
wxIMPLEMENT_APP(cApp);
cApp::cApp() {
}
cApp::~cApp() {
}
bool cApp::OnInit() {
m_frame1 = new cMain();
m_frame1->Show();
return true;
}

cMain.h

#pragma once
#include "wx/wx.h"
class cMain : public wxFrame
{
public:
cMain();
~cMain();
};

c主.cpp

#include "cMain.h"
cMain::cMain() : wxFrame(nullptr, wxID_ANY, "MyProgram") {
}
cMain::~cMain() {
}

您有2 个问题(由于下面的评论而编辑后(以下问题:

  1. 您正在将应用程序构建为控制台模式应用程序,而不是 GUI 应用程序。虽然也可以从控制台应用程序使用 wxWidgets,但这可能不是您要做的,因此请确保"Linker|系统|项目属性对话框中的"子系统"选项设置为"Windows"。
  2. 代码中没有wxIMPLEMENT_APP(cApp);宏。同样,完全可以避免它,但这可能不是您的目标,因此只需添加此行即可。此宏定义应用程序的mainWinMain,具体取决于平台。

链接器想要查找入口点(main 是默认入口点(。Windows 体系结构上的 wxIMPLEMENT_APP(cApp( 宏具有WinMain入口点。

我有三个快速的解决方案。

  1. 您可以在宏wxIMPLEMENT_APP(cApp(之前编写宏#define WinMain main

    (
  2. 您可以告诉链接器入口点的名称( 在您的情况下,入口点的名称是WinMain(。

项目属性 -> 配置属性 ->链接器 -> 高级 对话框的右窗格中是入口点函数名称的位置。

  1. 您的 Visual Studio 项目安装了控制台子系统(此子系统查找默认的主入口点(。必须将"子系统"值更改为"窗口"(此子系统查找WinMain入口点(。

项目属性 -> 配置属性 -> 链接器 -> 系统",然后将"子系统"属性设置为Windows (/SUBSYSTEM:WINDOWS(