关于调用 动态链接库 链接时 出 error LNK2001的问题,急!!!

xiaohonghong 2008-12-18 07:15:27
dll是MFC规则动态链接库,里边有对话框。该dll导出一个类CTestMode供调用者使用。
class _declspec(dllexport) CTestModel
{
public:
CTestModel();
~CTestModel();
。。。
};

该动态链接库编译没有问题,正确生成了lib和dll目标文件。

问题出在应用层编译链接该动态链接库时,出现如下链接错误:(头文件和lib库文件都拷贝了,不是路径的问题)

FlowCtrl.obj : error LNK2001: unresolved external symbol "public: __thiscall CDPaging::CDPaging(class CWnd *)" (??0CDPaging@@QAE@PAVCWnd@@@Z)
FlowCtrl.obj : error LNK2001: unresolved external symbol "public: __thiscall CDlgTDPaging::CDlgTDPaging(class CWnd *)" (??0CDlgTDPaging@@QAE@PAVCWnd@@@Z)
Debug/LvTest.exe : fatal error LNK1120: 2 unresolved externals

其中,CDPaging 和 CDlgTDPaging是动态链接库工程中的两个对话框。我将动态链接库中关于这两个对话框的引用部分注释掉后,就不会出现编译链接错误,看来就是对话框的问题,可是,我原来的程序运行的好好的,只是我增加了一些代码后最近才出这样的问题啊。
在动态链接库中某个函数中对话框的使用方式如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDPaging dlg;
dlg.DoModal();

我将这几句话注释掉后,程序不会出现链接错误,请问这是怎么回事啊,很着急。。这里先谢

...全文
189 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovedrv 2008-12-18
  • 打赏
  • 举报
回复
在你的应用层是如何定义导出类头文件的

要注意


class _declspec(dllimport) CTestModel
{
public:
CTestModel();
~CTestModel();
。。。
};
xiaohonghong 2008-12-18
  • 打赏
  • 举报
回复
你好,CDPaging 就是一个动态链接库里的一个普通对话框,没有什么复杂的代码,并且,我这个程序原来运行好好的,这个对话框原来就有,也没有改动,今天编译链接就出错了
CodeProject-Jerry 2008-12-18
  • 打赏
  • 举报
回复
用Dependency walker 查看一下 CDPaging 导出了没有

CDPaging 的代码呢?
zhoujianhei 2008-12-18
  • 打赏
  • 举报
回复
感觉应该有 extern "C" 才对啊。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧