转 https://blog.csdn.net/m0_37170593/article/details/76445972

这里以VS2017为例子,讲解一下动态链接库(.dll)的生成与使用。

一、动态链接库(.dll)的生成

1、打开:“文件”-“新建”-“项目”

2、打开:“已安装”-“模板”-“Visual C++”-“Win32”-“Win32 控制台应用程序”

把文件“名称”加上,为自己的工程名称;把“位置”加上,为自己的工程所在位置;

3、点击:“下一步”

4、选择“DLL”和“空项目”

然后点击“完成”

5、右击“panny_dll”项目,点击“添加”,点击“新建项”

6、点击“c++文件(.cpp)”,写上文件的“名称”为“panny_dll.cpp”

7、同样添加“panny_dll.h”

8、在“panny_dll.cpp”中添加程序如下

#include "panny_dll.h"
int panny(int i, int(*call_back)(int a, int b))
{
int aa;
aa = i*i;
call_back(i, aa);
return 0;
}

9、在头文件“panny_dll.h”中添加如下代码

#pragma once
__declspec(dllexport) int panny(int i, int(*call_back)(int a, int b));

10、点击“生成”-“重新生成解决方案”

11、如图,成功。

12、生成了.dll和.lib的文件

二、使用.dll文件

1、新建项目

2、如图,添加项目名称为“panny_dll_test”

3、点击“下一步”

4、选择“控制台应用程序”和“空项目”,然后点击“完成”

5、把“.dll”和“.lib”放到如图的文件夹里面

6、把“panny_dll.h”放到如图的文件夹里面

7、添加一个新建项“panny_dll_test.cpp”,方法参考“一”中的“5和6”

8、在panny_dll_test.cpp文件夹里面添加如下代码

#include <stdio.h>
#include "panny_dll.h"
int panny_call_back(int a, int b)
{
int c;
c = a + b;
printf("输出:%d\n", c);
return 11;
}
void main()
{
int p = 10;
int panny1;
panny1 = panny(p, panny_call_back);
printf("输出2:%d\n", panny1);
}

9、添加头文件“panny_dll.h”

10、添加"panny_dll.lib"到资源文件

11、点击“重新生成解决方案”

12、成功

13、执行如下

VS2017动态链接库(.dll)的生成与使用的更多相关文章

  1. MinGW gcc 生成动态链接库 dll 的一些问题汇总 (补充)

    我以前写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题.当时写的并不全面.近期又遇到写新的问题.这里记录一下,做个补充. 通常情况下,dll 中的函数假设採用 _stdcal ...

  2. 动态链接库DLL的创建生成及调用

    一.背景 最近在做CANTOUSB底层驱动的调用,是调用别人已经封装好的库,看不到别人写的源程序.程序中调用的是隐式调用即 x.h+x.lib+x.dll,其中DLL即是动态链接库(Dynamic L ...

  3. dll = MinGW gcc 生成动态链接库 dll 的一些问题汇总

    MinGW gcc 生成动态链接库 dll 的一些问题汇总 https://blog.csdn.net/liyuanbhu/article/details/42612365 网络上关于用 MinGW  ...

  4. MinGW gcc 生成动态链接库 dll 的一些问题汇总(由浅入深,很详细)

    网络上关于用 MinGW gcc 生成动态链接库的文章很多.介绍的方法也都略有不同.这次我在一个项目上刚好需要用到,所以就花了点时间将网上介绍的各种方法都实验了一遍.另外,还根据自己的理解试验了些网上 ...

  5. 编译可供C#调用的C/C++动态链接库dll文件

    编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...

  6. VC++动态链接库(DLL)编程深入浅出(zz)

    VC++动态链接库(DLL)编程深入浅出(zz) 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用 ...

  7. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性

    转自:http://blog.csdn.net/testcs_dn/article/details/27237509 本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链 ...

  8. [转] lib和dll 区别,生成及使用方法

    lib 和 dll 的区别.生成以及使用详解 [目录] lib dll介绍 生成动态库 调用动态库 生成静态库 调用静态库 首先介绍一下静态库(静态链接库).动态库(动态链接库)的概念,首先两者都是代 ...

  9. 动态链接库 DLL

    动态链接库DLL 不使用时不会有任何作用,只有在其他模块调用动态链接库中的函数时,它才发挥作用. 一.静态库与动态库 1.静态库 函数和数据被编译进一个二进制文件(.LIB),编译时,会将其组合起来创 ...

  10. 动态链接库dll,静态链接库lib, 导入库lib

    转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html 目前以lib后缀的库有两种,一种为静态链接库(Static Libar ...

随机推荐

  1. Confluence 6 自定义管理员联系信息

    你可以自定义在 联系站点管理员(Contact Site Administrators)页面中显示的消息. 希望编辑这个管理员联系消息: 在屏幕的右上角单击 控制台按钮 ,然后选择 General C ...

  2. 对Swoole、Workerman和php自带的socket的理解

    为什么php自带的socket不怎么听说,基本都是用swoole,workerman去实现? 1.PHP的socket扩展是一套socket api,仅此而已. swoole,用C实现,它的socke ...

  3. Mycat配置文件详解及全局序列号

    来详细的看看 mycat的配置文件,更多信息请查看:mycat权威指南. schema.xml: Schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库.表.分片规 ...

  4. TypeError: $(…).tooltip is not a function

    问题描述:改了一个页面,发现进入这个页面的时候就一直在load···,F12看了一下,发现报了这个错误TypeError: $(…).tooltip is not a function,然后我就百度了 ...

  5. Synchronized和java.util.concurrent.locks.Lockde区别联系

    1.Lock能够完成几乎所有synchronize的功能,并且具有锁投票,定时锁,可中断等候锁,synchronize是java语言层面的,是内置的关键字,Lock是一个包,synchronize使用 ...

  6. cf1107d 映射关系

    #include<bits/stdc++.h> using namespace std; ][]; int judge(int i){ ;j<=n;j++) ][j]); ; } i ...

  7. 总结Java虚拟机内存区域模型

    本篇文章主要来总结一下Java虚拟机内存的各个区域,以及这些区域的作用.服务对象以及其中可能产生的问题,作为大家的面试宝典. 首先我们来看一下Java运行时的数据区域,Java虚拟机在执行Java程序 ...

  8. servlet设置cookie

    Cookie cookie =new Cookie("user","黄花菜");//实例化一个Cookie对象 cookie.setMaxAge(7*24*60 ...

  9. 20165328 学习基础和C语言基础调查

    一.技能学习经验:      1.你有什么技能比大多数人(超过90%以上)更好: 我算是一个普通人,没什么特别的才能,如果硬要说有什么技能比其他人较好的话,我想大概是快速阅读的能力吧,我能以很快的速度 ...

  10. 【C++ Primer | 15】访问控制与继承、继承中的类作用域

    1. 只有D继承B的方式是public时,用户代码才能使用派生类向基类的转换:如果D继承B的方式是受保护的或者私有的,则用户代码不能使用该转换. 2. 不论D以什么方式继承B,D的成员函数和友员函数都 ...