vs2010 如何让创建和使用动态链接库(dll)
来源:互联网 发布:维普数据库论文检索 编辑:程序博客网 时间:2024/06/05 00:10
一、创建动态链接库项目:
1、打开Microsoft Visual Studio 2010,选择File->New->Project。2、在New Project中选择Installed Templates->Visual C++->Win32。
3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll。
4、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。
5、在Application Settings中,选择Application type下的DLL。
6、勾选Additional options下的Empty project。
7、单击Finish创建项目。
1、添加新类头文件。右键单击simpledll项目,Add->New Item,选择Header File(.h),设置名称为simpledll,单击Add。
2、添加新类源文件。右键单击simpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为simpledll,单击Add。
3、为新类添加内容。内容如下:
头文件simpledll.h:
//------------------ simpledll.h ----------------
#pragma once;
//该宏完成在dll项目内部使用__declspec(dllexport)导出
//在dll项目外部使用时,用__declspec(dllimport)导入
//宏DLL_IMPLEMENT在simpledll.cpp中定义
#ifdef DLL_IMPLEMENT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
namespace zdd
{
//导出类
class DLL_API SimpleDll
{
public:
SimpleDll();
~SimpleDll();
int add(int x, int y); //简单方法
};
}
源文件simpledll.cpp:
//------------------ simpledll.cpp ----------------
//注意此处的宏定义需要写在#include "simpledll.h"之前
//以完成在dll项目内部使用__declspec(dllexport)导出
//在dll项目外部使用时,用__declspec(dllimport)导入
#define DLL_IMPLEMENT
#include "simpledll.h"
namespace zdd
{
SimpleDll::SimpleDll()
{
}
SimpleDll::~SimpleDll()
{
}
int SimpleDll::add(int x, int y)
{
return x+y;
}
}
4、完成后点击Build->Build Solution,生成解决方案。可在~zdddll\Debug下查看生成的simpledll.lib和simpledll.dll.文件。
二、创建静态加载DLL的应用程序:
1、选择File->New->Project。
2、在New Project中选择Installed Templates->Visual C++->Win32。
3、选择Win32 Console Application,设置名称:usesimpledll。选择Add to solution。
4、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。
5、在Application Settings中,选择Application type下的Console application。
6、取消Additional options下的Precompiled header,勾选Empty project。
7、单击Finish创建项目。
在控制台应用程序中使用类库的功能:
1、为控制台应用程序添加main.cpp。右键单击usesimpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为main,单击Add。
2、为main.cpp添加内容。如下所示:
//------------------ main.cpp -------------------
#include "simpledll.h"
using namespace zdd;
#include <iostream>
using namespace std;
int main(char argc, char**argv)
{
SimpleDll sd;
cout << "sd.add: 3+5=" << sd.add(3, 5)<<endl;
SimpleDll *psd = new SimpleDll;
cout << "psd->add: 5+5=" << psd->add(5, 5)<<endl;
getchar();
return 0;
}
3.在工程目录下建立Include目录,将动态链接库的那个头文件拷入。建立lib目录,将生成的那个.lib文件拷入。然后将生成的.dll文件拷入生成.exe文件的那个目录(一般是项目下的Debug下)。
4.程序中要包含那个头文件,注意路径要写正确。Include “..\Include\simpledll.h”,或者右击工程,property,Configuration Properties,c/c++,General,在Additional Include Directories中加入“;..\Include”,这样包含头文件时直接写头文件名,不需要考虑路径,因为当在工程目录下找不到文件时,就会从添加的那个目录查找文件。
5.添加.lib文件
右击工程,property,Configuration Properties,Linker,Input,在Additional Dependencies中添加.lib路径(一般是..\lib\xxxxx.lib)。
运行效果:
另外,lib引用有两种方法:
1.#pragma comment(lib,”opengl32.lib”) (.#pragma comment()中的lib路径也是相对当前.cpp文件的)
2.选择project –> XX properties… –> linker –> Input –> Additional dependences,在其中加入lib文件名即可。
总结:
首先建立生成DLL的工程,生成.dll,.lib文件。需要用到的还有.h文件。
建立应用DLL的工程。要包含头文件,把3个文件拷入相应的目录。
在附加依赖项Additional Dependencies中添加.lib的路径,告诉程序调用的外部导入函数的地址,否则找不到函数,链接出错。
PS:如果是32位编译下生成的库,编译的时候用X64也会有问题!!
下载链接:http://download.csdn.net/detail/qq_17242957/9088275
VS 中相对路径的设置 和 验证::http://blog.csdn.net/qq_17242957/article/details/52348028
/*******************标准C接口的创建 和 动态调用***********************************、
创建的的项目后要在.def中添加
(
先说下导出函数的两种方式:
1.一种在函数声明类型和函数名之间加上“_declspec(dllexport)”。
2.另外一种采用模块定义(.def)文件声明,需要在库工程中添加模块文件
)
这里主要说下动态加载
#include <stdio.h>#include <iostream>using namespace std;#include <windows.h>// 注意这个地方要加上__stdcalltypedef int ( __stdcall *lpAddFun)(int ,int);//定义一个与Add_new函数接受参数类型和返回值均相同的函数指针类型int main(){HINSTANCE hDll;//句柄lpAddFun addFun;//函数指针hDll=LoadLibrary("F:\\DLLCReat.dll");//动态加载DLL模块句柄if(hDll){addFun=(lpAddFun) GetProcAddress(hDll,"Add");//得到所加载DLL模块中函数的地址if(addFun){int result=addFun(2,3);//printf("%d",result); cout << "psd->addFun 2+3=" << result<<endl;} FreeLibrary(hDll);//释放已经加载的DLL模块getchar(); }return 0;}
点击打开链接
直接上源码:
http://download.csdn.net/detail/qq_17242957/9735293
- vs2010 如何让创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库DLL和lib
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- VS2010 创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010创建和使用动态链接库(dll)
- vs2010 C++创建和使用动态链接库(dll)
- shell脚本语法总结
- 究竟什么才是互联网
- CentOS下添加新硬盘
- ssh的连接重用
- Reverse Bits
- vs2010 如何让创建和使用动态链接库(dll)
- 从Spring官网快速定位Spring Framework的位置
- 中断和异常的区别
- hadoop配置
- Evaluate Reverse Polish Notation
- [UIImage imageNamed:@"tab_back"]不显示图片的问题解决
- 相关名词
- 使用Maven来管理项目-使用Maven来创建一个Maven项目(二)
- 通过标准的Runtime API(C函数)打印UIKit中UIView的所有变量、属性以及方法