在静态调用dll的app工程中
“工具”->“选项”->“项目和解决方案”->“VC++目录”->“包含文件”,添加h目录。。这样可以直接在cpp中可以直接#include <mydll.h>
“工具”->“选项”->“项目和解决方案”->“VC++目录”->“库文件”,添加lib目录,供动态链接时引用。。这样可以直接在cpp中#pragma comment(lib,"mydll.lib")
path环境变量中添加dll目录,供exe运行时引用
或者在 右击项目--属性--配置属性--链接器--输入--附加依赖项里添加各个lib文件
或者在 在文件中加一行 #pragma comment(lib,"mydll.lib")
二者取其一
refer to
http://www.cnblogs.com/edisonfeng/archive/2011/08/02/2124682.html
源码
导出一般函数dll
http://download.csdn.net/detail/luck_good/4478147
一般导出类dll
http://download.csdn.net/detail/luck_good/4478149
下面补充制作mfc类dll的例子,vc2008
制作
建立dll项目,如下
![](https://img-my.csdn.net/uploads/201208/05/1344158114_2714.jpg)
![](https://img-my.csdn.net/uploads/201208/05/1344158128_4746.jpg)
然后添加一个类,如下
![](https://img-my.csdn.net/uploads/201208/05/1344158150_5739.jpg)
![](https://img-my.csdn.net/uploads/201208/05/1344158157_8971.jpg)
![](https://img-my.csdn.net/uploads/201208/05/1344158163_1426.jpg)
稍稍修改MyClass.h,在类声明里添加_declspec(dllexport),并添加一个成员函数int add(int a,int b);如下
#pragma once
class _declspec(dllexport) CMyClass
{
public:
CMyClass(void);
~CMyClass(void);
int add(int a,int b);
};
在MyClass.cpp添加add的实现代码
#include "StdAfx.h"
#include "MyClass.h"
CMyClass::CMyClass(void)
{
}
CMyClass::~CMyClass(void)
{
}
int CMyClass::add(int a,int b)
{
return a+b;
}
build之后,会生成my_dll.lib和my_dll.dll。
调用
在其他地方调用时,仅需将my_dll.lib拷贝到工程(比如.vcproj)所在目录,将my_dll.dll拷贝到exe所在目录。
当然头文件MyClass.h也要拷贝到工程所在目录
在调用的cpp中添加下面两行代码
#include "MyClass.h"
#pragma comment(lib,"my_dll.lib")
然后就可以调用了,比如
void CmydllcallDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CMyClass MyClass;
int i=MyClass.add(10,20);
}
mfc导出类源码
http://download.csdn.net/detail/luck_good/4478141
看来不管是制作一般的导出函数还是一般的导出类还是mfc的导出类:使用dll的向导结束后,只要添加一个文件,在此文件中写代码即可。函数和类需要使用_declspec(dllexport)修饰。