新建一个MFC共享DLL.CmdSender
一个接口类#pragma  once
#ifdef COMMAND_SENDER_EXPORTS
#define COMMAND_SENDER_API __declspec(dllexport)
#else
#define COMMAND_SENDER_API  __declspec(dllimport)
#endif
class  CCommandSenderInterface
{
public:
static CCommandSenderInterface* Create(CString strServiceName);
virtual bool StartService(IN int nP) = 0;
}; 
然后就是实现类.h#include "CommandSenderInterface.h"
class CCommandSenderImp:public CCommandSenderInterface
{
public:
CCommandSenderImp();
public:
~CCommandSenderImp();
virtual bool StartService(IN int nP);
...
};
.cppCCommandSenderImp::CCommandSenderImp()
{
}CCommandSenderImp::~CCommandSenderImp()
{
}bool CCommandSenderImp::StartService(IN int nP)
{
return false;
}再新建一个MFC工程
对话框类中#include "../CmdSender/CommandSenderImp.h"...
void CTestCmdSenderDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CCommandSenderImp* cmdImp = new CCommandSenderImp();
}
实例化生成报错
1>TestCmdSenderDlg.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CCommandSenderImp::CCommandSenderImp(void)" (??0CCommandSenderImp@@QAE@XZ),该符号在函数 "public: void __thiscall CTestCmdSenderDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CTestCmdSenderDlg@@QAEXXZ) 中被引用
1>C:\测试项目\Solution1\Debug\TestCmdSender.exe : fatal error LNK1120: 1 个无法解析的外部命令MFC项目属性中的链接器
输入 附加依赖项 CmdSender.lib已经添加.

解决方案 »

  1.   

    把CmdSender改为静态库倒是可以直接调用,动态库怎么调用呢?
      

  2.   


    {
    HINSTANCE hDllInst = LoadLibrary("CmdSender.dll");
    if(hDllInst)
    {
    typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
    MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函数别名
    PStartService= (MYFUNC)GetProcAddress
    (hDllInst,"StartService");
    // 在DLL中声明的函数名
    if(PStartService)
    {
    PStartService(param1);
    }
    FreeLibrary(hDllInst);
    }
    }①LoadLibrary(或MFC 的AfxLoadLibrary),装载动态库。 
    ②GetProcAddress,获取要引入的函数,将符号名或标识号转换为DLL内部地址。 
    ③FreeLibrary(或MFC的AfxFreeLibrary),释放动态链接库。
      

  3.   

    第6行代码有误 youFuntionNameAlias  改成 PStartService
      

  4.   

    http://www.cnblogs.com/wucg/archive/2011/02/09/1950261.html在贴个链接
      

  5.   

    动态库你要想用类,就需要导出类
    http://blog.csdn.net/hgy413/article/details/6545617
      

  6.   

    3KS,稍后结贴.看来C++还是和C#有很大不同的.
      

  7.   

    楼主缺少一个
    class AFX_EXT_CLASS CCommandSenderImp