新建一个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已经添加.
一个接口类#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已经添加.
解决方案 »
- 远程读取系统日志的问题
- vc6.0和水晶报表2008整合到一起的方法
- VC中,static 静态变量在调试时如何查看值
- 刚有些入门,想把基础知识重新理解下?
- 如何获得数据库中的表名和个数
- 请教:如何使用IHTMLWindow2的put_onload(VARIANT v)方法来设置接收event的IDispatch object?
- 在线50分很快就会得到:我用VC新建一个控件,如何得到CMyOCXCtrl的指针,就好象得到CMyView的指针?
- CListView类,如何知道双击的是某一条item,二不是空白处?
- 怎样显示文本?
- mscomm控件接收数据问题
- 函数指针做参数问题
- 模态对话框显示不了
{
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),释放动态链接库。
http://blog.csdn.net/hgy413/article/details/6545617
class AFX_EXT_CLASS CCommandSenderImp