新建一个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已经添加.
解决方案 »
- 任务管理器的 i/o其他 一列
- CString转换为DWORD问题
- 单文档应用程序,怎样退出呢
- vs 2003 中建立MFC项目,按下F5进行调试程序,系统出现提示:Unable to start debugging. no such interface supported.
- 有没有提供现成的端对端通信的COM组件?
- 高手请进来指点一下,在线等待急急急!
- 请教我的程序为什么每次编译时都要完全编译
- 我的inline函数是在.cpp的实现函数中写inline说明的,但是编译器是内部链接,所以如果在其他文件中用这个函数就会出现链接问题,请问如何
- 关于VS6.0在WinXP的安装问题!!!!!
- 一客户端(如vc)访问数据库(如oralce),数据库用的是gb2312字符集,但客户端向数据库查询一字符字段时,数据库会向客户端返回查询结果
- 函数指针做参数问题
- 模态对话框显示不了
{
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