未解析的外部符号 - 仅在发布模式下

时间:2012-01-06 19:53:31

标签: c++ visual-c++ mfc vc6 unresolved-external

我正在使用Visual C ++ 6,我的应用程序在调试模式下构建并运行良好,但在尝试在发布模式下构建时,我得到了这两个未解决的外部符号错误:

OverUnderReportDoc.obj : error LNK2001: unresolved external symbol "public: virtual int     __thiscall COverUnderReportDoc::GenerateReport(void)" (? GenerateReport@COverUnderReportDoc@@UAEHXZ)

OverUnderReportDoc.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall COverUnderReportDoc::DoReport(void)" (?DoReport@COverUnderReportDoc@@UAE_NXZ)

COverUnderReportDoc是一个派生自CReportDoc的类,它派生自CDocument,它是MFC框架的一部分。

以下是函数声明:

public:

virtual int GenerateReport(void);
virtual bool DoReport(void);

定义:

bool COverUnderReportDoc::DoReport(void)
{

// Instantiate the dialog
CCriteriaDlg dlg;
m_Report.BreakSpace(FALSE);

// Get a pointer to the window
CWnd* pWnd = AfxGetApp()->m_pMainWnd;

// When OK is clicked...
if (dlg.DoModal() == IDOK)
{       
    // Set the document title
    SetTitle("Inventory Over/Under");

    // Copy some values from the dialog to member variables

    GenerateReport();

    pWnd->ShowWindow(SW_MAXIMIZE);

}
else
{
            // If Cancel is clicked, close the program
    if(pWnd)
        pWnd->PostMessage(WM_CLOSE);
    return false;
}

return true;
}

int COverUnderReportDoc::GenerateReport(void)
{

// write the headers to the report
// if there was no problem
if (DoHeaders())
{
    // assemble the report data
    // if that went well
    if (ScanFile())
        // write the summary to the report
        DoSummary();
}
// return the document status
return m_nStatus;
}

我真的不确定如何解决这个问题,这些方法不在任何库中,并且该类编译得很好,所以我不知道它为什么在链接时看不到它们。有人有什么想法吗?

编辑:以下是我的项目选项:

发布项目选项:

C/C++的{​​{1}}标签

Project Settings

/nologo /Zp1 /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "BTI_WIN_32" /FR"Release/" /Fo"Release/" /Fd"Release/" /FD /c 的{​​{1}}标签

Link

调试项目选项:

Project Settings的{​​{1}}标签

MYLIB.lib w3btrv7.lib VERSION.LIB /nologo /subsystem:windows /incremental:no /pdb:"Release/OverUnderReport.pdb" /machine:I386 /out:"Release/OverUnderReport.exe" 

C/C++的{​​{1}}标签

Project Settings

2 个答案:

答案 0 :(得分:3)

在pastebin.com/e1E0WcBT第102行:

#ifdef _DEBUG

导致在构建为发布模式时从该点跳过所有成员函数的定义。

答案 1 :(得分:1)