我的 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”开始了当前的项目。
当链接器找不到对函数或变量的引用的定义时,就会出现 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
}