3

我有 2 个项目的解决方案。在第一个项目中,我有 Frame 和一些控件,在第二个项目中 - CForcesEditorDialog:CDialog。Ofcouse我想比较它们。但是这个错误没有给我编译项目:

MainFrame.obj:错误 LNK2019:未解析的外部符号“public:__thiscall CForcesEditorDialog::CForcesEditorDialog(class CWnd *,class MainFrame *)”(??0CForcesEditorDialog@@QAE@PAVCWnd@@PAVMainFrame@@@Z) 在函数“protected”中引用: int __thiscall MainFrame::OnCreate(struct tagCREATESTRUCTA *)" (?OnCreate@MainFrame@@IAEHPAUtagCREATESTRUCTA@@@Z)

class CForcesEditorDialog;

class MainFrame : public CFrameWnd
{
    CForcesEditorDialog* forcesEditorDialog;    

public:
    MainFrame();    
    ~MainFrame();   
    //virtual void CreateChildControls( void );
    //afx_msg void OnMouseMove(UINT, CPoint);

protected:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    DECLARE_MESSAGE_MAP()
};

int MainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    forcesEditorDialog = new CForcesEditorDialog(this,this);//CForcesEditorDialog(this,this);   
}




class CForcesEditorDialog : public CDialog
{
    //For including ForcesBar
    ForcesBar* m_forcesBar;
    MainFrame* pMainFrame;
public:
    CForcesEditorDialog(CWnd* _pParentWnd = NULL, MainFrame* _pMainFrame = NULL);   // standard constructor
}

CForcesEditorDialog::CForcesEditorDialog(CWnd* _pParentWnd, MainFrame* _pMainFrame)
: CDialog(IDD_CUR_DIALOG, _pParentWnd),
      p_expander    (0),
      p_selectedItem(0),
      m_enabled     (false)
{
    m_forcesBar = new ForcesBar();
    pMainFrame = _pMainFrame;
}

可能是我在包含这个项目时遇到了问题。我从来没有用过 2 个项目的解决方案。你有什么想法吗?

4

4 回答 4

3

你有一个链接错误。Visual Studio 在编译时找到 CForcesEditorDialog 但在链接时没有找到。您必须在第一个项目的项目设置中添加第二个项目的 .lib 文件(Property Pages -> Linker -> Input -> Additional Dependencies)。

希望能帮助到你。

于 2012-04-30T06:48:47.117 回答
1

CForcesEditorDialog 是您编译的项目的一部分吗?换句话说,项目中是否包含 CForcesEditorDialog 的实现文件 (cpp) 会为您提供此错误消息?它是另一个项目或 DLL 的一部分吗?

于 2012-04-29T16:21:11.893 回答
0

尝试在 MainFrame 类之前剪切 - 粘贴类 CForcesEditorDialog

应该做的伎俩

于 2012-04-29T14:10:11.783 回答
0

CForcesEditorDialog 在什么类型的项目中?它是静态库还是动态dll?

如果它是动态的,则需要从 dll 中导出要在 exe 中使用的函数和类。本教程提到导出: http: //www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c4017/MFC-DLL-TUTORIAL-PART-1.htm

使用 AFX_EXT_CLASS。您将在您的类声明中使用它从您的 dll 中导出它,例如:

class AFX_EXT_CLASS CForcesEditorDialog : public CDialog
{
于 2012-04-29T14:38:41.323 回答