windows编写动态链接库DLL

1. 在VC中新建win32控制台工程,该工程调用动态链接库my.dll中的函数add,实现加法,代码如下

#include <stdio.h>
#include <windows.h>

typedef int(*lpAddFun)(int, int);//宏定义函数指针类型

int main(int argc, char *argv[])
{
    HINSTANCE hDll;//DLL句柄
    lpAddFun addFun;//函数指针
    hDll = LoadLibrary("my.dll");//加载库
    if (hDll != NULL)
    {
        addFun = (lpAddFun)GetProcAddress(hDll, "add");//获得add函数指针
        if (addFun != NULL)
        {
            int result = addFun(2, 3);
            printf("%d\n", result);
        }
        FreeLibrary(hDll);
    }

    return 0;
}

2. 在VC中新建动态链接库my,其中有一加法函数add,代码如下

extern "C" __declspec(dllexport) int add(int, int);//导出库函数add

int add(int a, int b)
{
	return a + b;
}

将该工程编译所得的dll与1中的控制台工程放到同一目录下,即可调用该dll。

时间: 2024-10-19 12:34:10

windows编写动态链接库DLL的相关文章

VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性

本文将创建一个简单的动态库-link,谱写控制台应用程序使用该动态链接库,该动态链接库为"JAVA调用动态链接库DLL之JNative学习"中使用的DLL,仅仅是项目及文件名不同. 创建动态链接库项目:1.打开Microsoft Visual Studio 2010,选择文件->新建->项目. 2.在新建项目窗体中选择其他语言->Visual C++->Win32. 3.选择Win32 项目,设置名称:simpleDLL.设置解决方式名:simpleDLL.4.

C++编写 动态链接库dll 和 调用dll

参考:https://jingyan.baidu.com/article/ff42efa92c49cfc19e2202fd.html 和htps://jingyan.baidu.com/article/ff411625c7e60812e48237d5.html 和https://blog.csdn.net/baidu_30174103/article/details/80514925 1.首先遇到了VS2015一新建项目就出现未将对象引用设置到对象的实例的问题,参考:https://www.zh

windows动态链接库[DLL]与Linux共享库[SO]技术浅析

一.动态链接库的技术优点: 1)节省内存和磁盘空间:因为动态库在内存或磁盘中只需一份,便可供多个进程或程序使用. 2)模块化编程,方便协作:这一点静态库也能胜任. 3)使用动态加载DLL或SO时,便于模块升级,无需重新编译或链接整个程序. 二.windows的动态链接库: 1.windows的静态库生成的是.lib文件,其中包含了函数和数据实体,链接时合到程序中: 2.windows的动态库生成.dll文件并导出一个.lib文件,该.lib文件中的函数没有实体[不是一个 准确的说法],函数内部是

Windows Phone 8加载外部动态链接库DLL(非安装包内的)

Windows Phone 8加载外部动态链接库DLL(非安装包内的) 在<动态加载与插件化>中大概介绍了下,wp8加载非安装包的下动态链接库,这次详细梳理下. 加载外部DLL主要的原理: 通过NtCurrentTeb获得线程环境块 从线程环境块中获得进程环境块 在进程环境块中加载过得DLL链表 从链表中找到kernelbase.dll的模块句柄 从kernelbase.dll中获得LoadLibraryEx函数地址 加载指定地址下的DLL 相关的结构体: typedef struct _CL

Windows编程 - 遍历程序使用的动态链接库(dll) 代码(C++)

遍历程序使用的动态链接库(dll) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 遍历程序使用的动态链接库(dll), 首先需要遍历所有进程, 匹配进程名称与进程ID, 然后根据进程名称, 输出所有使用的库(dll). 示例中Image.exe是预先启动的程序. 代码包含遍历进程的代码, 和输出动态链接库(dll)的代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike

动态链接库DLL的通俗理解

今天主要布置了一个任务要求写一个ocx控件,是用VC开发,虽然一直以来都是用VC写程序,但是使用到的功能仅仅是写一个小程编译运行,连链接都省去了,因为所有的功能都在一个文件里面就省去了链接这一步,所以写个这个什么ocx空间也只能是从零开始,主管给了几个DLL文件和说明文档,在电脑C盘里面看见过许多DLL为后缀的文件,但是不知道是什么东西也没有去了解过,现在要用了,这篇文章就给大家介绍一下我对DLL的了解,我是菜鸟准备入门,前辈勿喷.首先看一百度百科上怎么说: "DLL文件又称"应用程序

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

http://bbs.pediy.com/showthread.php?p=1354999 标 题: [原创]使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程.作 者: shayi时 间: 2015-02-12,05:19:54链 接: http://bbs.pediy.com/showthread.php?t=197829 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程. (本文同步更

ASP.net/C#中如何调用动态链接库DLL

动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现.  动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其它DLL调用来完成一定操作的函数(方法.注:C#中一般称为“方法”),但这些函数不是执行程序本身的一部分,而是根据进程的需要按需载入,此时才能发

关于动态链接库DLL的入门学习

演练:创建和使用动态链接库 (C++) 由于最近用到DLL,所以赶紧突击学习一下,找到了一些自认为比较好的练手材料,收集整理给后来人,也为了总结下,如下: 先来个网友 写的,热热身,但是请注意--extern "C"问题,详情请关注http://blog.csdn.net/lxw907304340/article/details/44922291: http://blog.csdn.net/lxw907304340/article/details/44856815: http://bl