包含 wxPanel 后无法解析外部?

问题描述 投票:0回答:1

我的 GUI 工作正常,直到我决定包含一个用于绘制简单图形的面板对象,所以我创建了一个类

class dataPanel : public wxPanel
{

public:
    dataPanel(wxFrame* parent);


    wxDECLARE_EVENT_TABLE();
};

然后我在框架中添加了以下代码行:

dataPanel * dataDisp = new dataPanel(this);

现在我收到以下链接器错误:

LNK2019 未解析的外部符号“public: __cdecl dataPanel::dataPanel(类 wxFrame *)" (??0dataPanel@@QEAA@PEAVwxFrame@@@Z) 在函数“public: __cdecl MyFrame::MyFrame(class wxString const &)" (??0MyFrame@@QEAA@AEBVwxString@@@Z)

将上面这行代码拿出来,编译就可以了。我有菜单结构、工具栏和一切,但是当我尝试创建面板时,出现链接器错误。我已经打开了使用面板的示例项目。我已经编译了,没有任何问题。我将他们的设置与我的设置进行了比较,看起来它们是相同的,所以我不确定断开连接在哪里。

还有其他人经历过这种情况吗?我使用 wxWidgets 附带的“minimal.sln”开始了当前的项目。

c++ wxwidgets unresolved-external
1个回答
1
投票

当链接器找不到对函数或变量的引用的定义时,就会出现 LNK2019 无法解析的外部符号。我在这里找到了很好的解释

如何解决错误 LNK2019:无法解析的外部符号 - 函数? https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2019?view=msvc-170

根据 VZ 的评论。还有伊戈尔。

您可能在类定义中声明了 dataPanel 的构造函数,但没有提供它的实现。编译器找到声明但找不到对应的定义,导致链接器失败。

在您的

dataPanel::dataPanel
文件中添加
.cpp
的实现,并确保您的
dataPanel
类包含在您的主应用程序文件中。

在你的构造函数文件中

#include <wx/wx.h>
#include "dataPanel.h" // Include the header file for dataPanel

dataPanel::dataPanel(wxFrame* parent)
    : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, "dataPanel")
{
    // Initialization code here 
    SetBackgroundColour(*wxWHITE); // Example: Set background color to white
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.