回 帖 发 新 帖 刷新版面

主题:如何在MFC的EXE工程中引用MFC建立的DLL???

最近在研究DLL,没想到刚上手就出现了问题了。我首先在MFC下建立了一个名为DLL1的DLL工程,
class CDll1App : public CWinApp//此类由工程自动生成
{
public:
    _declspec(dllexport) int subtract(int a,int b);
    _declspec(dllexport) int add(int a,int b);
}
以上是我写的两个简单函数。然后又建立了一个MFC的EXE工程,并将DLL1.LIB和DLL1.DLL复制到此工程目录下,且在工程——设置——连接页设置了对象/库模块为DLL1.LIB。最后在响应函数的头文件中声明:
_declspec(dllimport) int add(int a,int b);
_declspec(dllimport) int subtract(int a,int b);
响应函数如下:
void CTestDll1Dlg::OnAdd() 
{
    // TODO: Add your control notification handler code here
    CString str;
    str.Format("5+3=%d",add(5,3));
    MessageBox(str);
}
却出现以下报错:
--------------------Configuration: TestDll1 - Win32 Debug--------------------
Compiling...
TestDll1Dlg.cpp
Linking...
TestDll1Dlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) int __cdecl add(int,int)" (__imp_?add@@YAHHH@Z)
Debug/TestDll1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

TestDll1.exe - 1 error(s), 0 warning(s)

请高手指点!!不胜感激!!

回复列表 (共3个回复)

沙发

你导出整个类,不知道能不能一个类只导出部分函数。
另外: 你不用def文件 最好用上extern "C"

板凳

那如何把导出整个MFC的类呢?

3 楼

问题已解决,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册