制作:

//myDll.h
_declspec(dllexport) int add(int a,int b);
_declspec(dllexport) int sub(int a,int b);
//myDll.cpp
#include"myDll.h"//这个必须有,不然导不出去,可以不要头文件,重点_declspec(dllexport)
int add(int a,int b)
{
return a+b;
} int sub(int a,int b)
{
return a-b;
}
//入口函数,文件名随意xx.cpp
#include <Windows.h> BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{//下边几个自由发挥
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

使用:

1,typedef函数指针;

2,声明指针变量;

3,动态加载dll到内存;

4,获取函数地址;

5,调用函数;

6,释放动态链接库,FreeLibary(HMODULE hDll);

//test.cpp
#include<stdio.h> typedef int (*LPdd)(int,int);
typedef int (*LPsub)(int,int); LPadd add;
LPsub sub;
int main()
{
HMODULE hDll = LoadLibary("demoDll.dll"); add = (LPadd)GetPrecAddress(hDll,"add");
sub = (LPsub)GetProcAddress(hDll,"sub"); int x=add(,);//x=12
int y=sub(,);//y=8 return ;
}

windows制作动态链接库和使用一的更多相关文章

  1. windows制作动态链接库和使用二

    动态库的另一种制作方法: 不使用_declspec(dllexport)关键字,使用.def文件 //exportFun.def 文件名随意 EXPORT add @ //格式 函数名 @编号 < ...

  2. 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程

    使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程 http://blog.csdn.net/liujiayu2/article/details/5 ...

  3. Windows 下动态链接库和静态链接库

    1.静态链接库:就是在编译的时候把库中代码复制进工程中,导致工程变大,但是速度快. 缺点在于一套代码可能在内存中有多份拷贝,占用内存. 2.动态链接库:库由windos api加载库代码,内存中只有一 ...

  4. Linux与Windows中动态链接库的分析与对比

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  5. windows编译动态链接库,dll+lib的形式

    之前一直在linux上做开发,没怎么关注过windows上如何编译动态链接库.不过一直存疑,为什么windows上的动态链接库是.dll配合.lib使用的,这个又是怎么生成的呢,通过一段时间的查资料和 ...

  6. 制作动态链接库给opencv程序使用(使用QtCreator)

    新建一个c++库项目 pro文件 #------------------------------------------------- # # Project created by QtCreator ...

  7. [Windows] [DLL] [动态链接库技术]

    cppblog.com 天空的博客 http://www.cppblog.com/API/archive/2011/03/10/141506.html cnblogs.com 吴秦的博客 http:/ ...

  8. 仿Windows制作TreeView数据加载

    时间有限就直接贴源码吧,理解思路即可. 页面代码: <asp:TreeView ID="TreeViewLeft" runat="server" Show ...

  9. Linux下生成动态链接库是否必须使用 -fPIC 的问题[转]

    在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库.经常遇到的一个问题是 -fPIC 是不是 ...

随机推荐

  1. StaticLinkList(静态链表)

    写这个写了几次,然后都没写完就关掉了,所以也不想多码字了,直接上代码吧(本来还认真自制了一张图片来理解静态链表的cursor与sub之间的关系)但其实也就那么回事:通过游标来找下标通过下标找到对应的数 ...

  2. 使用Servlet处理AJAX请求

    AJAX用于异步更新页面的局部内容. ajax常用的请求数据类型 text    纯文本字符串 json    json数据 使用ajax获取text示例 此种方式常用于前端向后台查询实体的一个属性( ...

  3. Mysql按照字段的重复数排序

    select source_job_number,count(*) as count from v1_user WHERE source_id=3 group by source_job_number ...

  4. postman使用get请求的url地址传参中文乱码问题

    编码之后

  5. Sonic_cli常用命令

    用户名:admin 密码:YourPaSsWoRd //change password1>admin@sonic:~$ passwdChanging password for admin.(cu ...

  6. win10上安装mysql8(installer方式)并创建用户开启远程连接

    1.进去mysql官网,下载mysql安装工具: 2.运行下载的mysql-installer-community-8.0.17.0.msi,一次往下执行就好了,以下是几个注意的点: 后面还有个地方就 ...

  7. springMVC的 Converter转换器 和 Formatter

    Converter转换器 spring的Converter是可以将一种类型转换成另一种类型的一个对象, 自定义Converter需要实现Converter接口 日期转换器 import java.te ...

  8. jQuery常用操作(待续)

    1. input清空内容 <1> $("#选择器id").val(""); <2> $("input[name='input框 ...

  9. day21-Python运维开发基础(单个字符匹配 / 多字符匹配)

    1. 正则表达式(单个字符匹配) # ### 正则表达式 => 单个字符匹配 import re """ lst = re.findall(正则表达式,字符串) & ...

  10. Fiddler抓包(基本使用方法、web+app端抓包、篡改数据、模拟低速)

    1.HTTP代理原理图 http服务器代理:既是web服务器,又是web客户端 接口vs端口: 接口:包含地址和端口 端口:类似于USB接口 地址:127.0.0.1,端口默认:8888        ...