网站首页 > 资源文章 正文
如何简单快速创建Win32平台下的动态链接库?但是有的创建出来用C/C++调用时没有问题,但是在其它编程语言调用时可能会出现问题,下面我们就开非常傻瓜式的步骤创建通用的windows动态库过程:
1,创建空的win32空的工程。
2,添加C/C++原文件和头文件。
3,头文件内容(MyHead.h):
#ifndef __MYHEAD_H__
#define __MYHEAD_H__
#ifndef MY_API
#define MY_API extern "C" __declspec(dllimport)
#endif
添加你想要放到Dll中的引出函数,我们这里用一个加和减的函数功能来举例。
MY_API int WINAPI MyAdd(int a, int b);
MY_API int WINAPI MySub(int a, int b);
#endif //__MYHEAD_H__
本质上,在外面使用这个头文件是不会定义MY_API,所以在外使用DLL时,文件夹内容实际上为:
extern "C" __declspec(dllimport)int __stdcall MyAdd(int a, int b);
extern "C" __declspec(dllimport)int __stdcall MySub(int a, int b);
4,C/C++内容:
#include <windows.h>
#define MY_API extern "C" __declspec(dllexport)
#include "MyHead.h"
MY_APIint WINAPI MyAdd(int a, int b)
{
return (a + b);
}
MY_APIint WINAPI MySub(int a, int b)
{
return (a - b);
}
注意:这里定义了MY_API。本质上,这里的函数声明为:
extern "C" __declspec(dllexport)int __stdcall MyAdd(int a, int b);
extern "C" __declspec(dllexport)int __stdcall MySub(int a, int b);
5,增加def文件(Mydll.def):
;DLL导出文件,名字Mydll可以加引号
;by John
LIBRARY Mydll
EXPORTS
MyAdd @1
MySub @2
注意:
一、在def文件中,函数名和@索引之间需要有空格、TAB等分隔符。
二、def文件需要在“配置”,“配置属性”,“连接器”,“输入”,“模块定义文件”制定,否则即使添加到工程也不会起作用。在VS2008等后来版本中,也不能用#pragma comment(linker, "/DEF:\"Mydll.def\"")来让def文件起作用。
这样用def文件生产的dll才能在VC以及VB等其他语言中使用。
C语言编程调用dll时,只要引入MyHead.h和对于的lib,并加入dll文件即可编译运行。
比如在VB中可以声明为:
Declare Function MyAdd Lib "Mydll.dll" (ByVala As Long, ByValb As Long) As Long
DeclareFunction MySub Lib "Mydll.dll" (ByVala As Long, ByValb As Long) As Long
通过这五步,就可以把生成的Lib文件和dll文件提供给windows平台下的其它编程时使用,怎么样,比较简单吧?
大家如果对编程感兴趣,想了解更多的编程知识,解决编程问题,我们这里有java高手,C++/C高手,windows/Linux高手,android/ios高手,请大家关注我的微信公众号:程序员互动联盟或者coder_online
猜你喜欢
- 2025-05-22 PyQt5运行报错:no Qt platform plugin could be initialized
- 2025-05-22 零基础学习网站必知—http协议等资料大全
- 2025-05-22 CVE-2020-3535漏洞分析
- 2025-05-22 retroarch模拟器使用教程(三):机顶盒安装复古游戏模拟器
- 2025-05-22 解决Apache 2.4+PHP5.6不支持CURL
- 2025-05-22 ISE14.7 64位版本在Win10上出现闪退现象的原因和解决方法
- 2025-05-22 pb9采用oleeb方式连接asa数据库
- 2025-05-22 Visual Studio 2022插件及dll安装流程
- 2025-05-22 什么是 静态库[.lib,.a]、动态链接库(共享库)[.dll,.so]
- 2025-05-22 「Qt入门第22篇」 数据库(二)编译MySQL数据库驱动
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)