2013-05-13 125 views
0

我想在MFC應用程序中的「文件另存爲」編程代碼。MFC C++ LNK 2019錯誤

我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:無法解析的外部符號 「市民:INT __thiscall CTESTDlg :: SAVEFILE(wchar_t的常量*)」(SAVEFILE @ CTESTDlg @@ QAEHPB_W @ Z?)在函數引用「公衆:

我該如何解決這個??幫助深表感謝。 謝謝。

編輯。

取出if (SaveFile (dlg.GetPathName())線後,該文件可以構建和運行,但是當過我按保存按鈕,沒有文件被保存。

+0

您是否實施了'SaveFile'?你在編譯cpp嗎? – 2013-05-13 08:02:54

+0

@LuchianGrigore SaveFile在頭文件中實現。 – Ashton 2013-05-13 08:21:52

+0

你能展示更多代碼嗎?理想情況下,這是一個簡短的,自成體系的例子,可以證明您的問題,其他人可以嘗試構建。 – simonc 2013-05-13 08:37:42

回答

1

它沒有任何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(); 
    } 
} 
0

添加到您的CPP文件:

BOOL CTESTDlg::SaveFile (LPCTSTR pszFile) 
{ 
    // ... add your code that saves the information to the file here... 

    return TRUE; 
} 

它仍然不會做任何事情(沒有保存代碼),但它會編譯。