vs2005dll创建和使用简单例子
来源:互联网 发布:64位dbc2000数据库 编辑:程序博客网 时间:2024/05/22 14:12
打开vs2005,文件-》新建-》项目,选择“win32项目”,在“名称”中输入“liugdll”,点“确定”-》下一步,在“应用程序设置”的“应用程序类型”中选择“DLL”,“附加选项”中选择“空项目”,然后点“完成”。这样dll项目就建立起来了。
project :liugdll
one.h
extern "C" int addx(int a,int b);//主要是让该dll被可以被c程序调用。
one.cpp
#include"one.h"
int addx(int a,int b)
{
return a+b;
}
testdll.def
LIBRARY "liugdll"
EXPORTS
addx @1
linker-》input-》模块定义文件:liugdll.def
debug编译结果得到 liugdll.dll liugdll.lib
b 使用declspec(dllexport)
//只有头文件不同
one.h
extern "C" __declspec(dllexport) int addx(int a,int b);//主要是让该dll被可以被c程序调用。 如果使用了调用协定的话,调用协定放在__declspec(dllexport)右边。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2,使用
a隐士调用
需要把三个文件放到 你使用该dll的程序目录中
one.h liugdll.dll liugdll.lib
one.h这个和定义dll的one.h是不一样的(也就是其实有两个one.h)//其实一般利用宏就可以避免定义两个,这里只是为了说明最简单的例子,所以不那么做。
def文件定义导出函数的方式,one.h中的extern "C"都要删掉
不是用def定义导出函数的方式,__declspec( dllexport )要修改成__declspec(dllimport)
程序中使用方法:
1 ,包含one.h头文件
2,在 连接器-》输入-》添加依赖里面 加上liugdll 或者直接在调用程序里面添加 #pragma comment(lib, “liugdll.lib”)
3,
#include"one.h"
#pragma comment(lib, "liugdll.lib")
int main()
{
int sum=0;
sum=addx(1,2);
return 0;
}
b显示调用
需要把one.h liugdll.dll文件放到 你使用该dll的程序目录中
1 ,包含one.h头文件
2,在你的程序引用改dll的cpp中
#include"one.h"
HINSTANCE hinstance = LoadLibrary("liugdll.dll");
typedef int (*_add) (int a, int b);
_add myadd= (_add)GetProAddress(hinstance, "addx");
然后开始使用
myadd(1,2)
- vs2005dll创建和使用简单例子
- vb2005 创建和使用线程的简单例子
- 创建和使用Qt插件的简单例子
- 使用ByteBuffer和MappedByteBuffer的简单例子
- 使用eclipse创建JPA-->:附带一个简单的例子
- 创建动态库和静态库的简单例子
- grail安装和创建一个简单的例子
- oracle创建存储过程和函数的简单例子
- 外部表创建简单例子
- ArcEngine创建IElement简单例子
- 使用JSSE创建keystore文件和导出cert的例子
- StrutsFileUpload使用简单例子
- BOOST_FOREACH使用简单例子
- gSOAP简单使用例子
- HTablePool简单使用例子
- HttpClient使用简单例子
- HTablePool简单使用例子
- NSTimer使用简单例子
- xxd命令
- H3C和CISCO交换机做聚合配置
- 药监局拟禁止非处方药发布广告遭药企反对-药监局-禁止-非处方药
- C实现的俄罗斯方块
- 数组
- vs2005dll创建和使用简单例子
- (面试前准备)IOC实现
- c++ 与 object c 混编疑惑问题
- 展讯平台sc8810 make 过程
- C# Socket编程
- Extjs下拉树代码测试总结
- 河南伊川千万元北大门被指设计雷人像圈套-建筑-设计-投资
- OpenCV中常用类库含义和源码
- C# String和byte[]的转换