gpt4 book ai didi

c++ - MFC C++ LNK 2019 错误

转载 作者:行者123 更新时间:2023-11-28 07:37:21 25 4
gpt4 key购买 nike

我正在尝试在 MFC 应用程序中编写“文件另存为”编程代码。

在我的 TestDlg.h 头文件中我得到了

public:
BOOL SaveFile (LPCTSTR pszFile);
CString m_strPathName;

在我的 TestDlg.cpp CPP 文件中我得到了

void CTESTDlg::OnSaveFile()
{
TCHAR szFilters[] =
_T ("Text files (*.txt)¦*.txt¦All files (*.*)¦*.*¦¦");

CFileDialog dlg (FALSE, _T ("txt"), _T ("*.txt"),
OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, szFilters);

if (dlg.DoModal () == IDOK)
{
if (SaveFile (dlg.GetPathName ()))
m_strPathName = dlg.GetPathName ();
}
}

在此之后,我构建了我的解决方案并遇到了这个错误。

LNK2019:未解析的外部符号“public: int __thiscall CTESTDlg::SaveFile(wchar_t const *)”(?SaveFile@CTESTDlg@@QAEHPB_W@Z) 在函数“public:”中引用:

我该如何解决这个问题??非常感谢您的帮助。谢谢。

编辑。

删除 if (SaveFile (dlg.GetPathName ()) 行后,文件可以生成并运行,但是当我按下保存按钮时,没有文件被保存。

最佳答案

这不是任何 MFC 或内部错误,而是您的编程错误。

当您在 .h 文件中声明任何方法时,该方法的主体应该存在于 .cpp 文件中。否则它会给出函数在 .obj 文件中未找到的链接错误。所以你的解决方案是在 .h 和 .cpp 文件中使用相同的函数,比如,在.h文件中,

public:
BOOL SaveFile (LPCTSTR pszFile);
CString m_strPathName;'

在 .cpp 文件中,

void CTESTDlg::OnSaveFile(LPCTSTR pszFile)
{
TCHAR szFilters[] =
_T ("Text files (*.txt)¦*.txt¦All files (*.*)¦*.*¦¦");

CFileDialog dlg (FALSE, _T ("txt"), _T ("*.txt"),
OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, szFilters);

if (dlg.DoModal () == IDOK)
{
if (SaveFile (dlg.GetPathName ()))
m_strPathName = dlg.GetPathName ();
}
}

关于c++ - MFC C++ LNK 2019 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16517254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com