转载:https://blog.csdn.net/zhunianguo/article/details/52294339

.def 方法

创建动态库方法:
创建动态库是生成 .dll .lib 两个个文件

文件 -> 新建 -> 项目 -> win32控制台应用程序 项目名称:DLLGenerator

应用程序类型:DLL  附加选项:空项目
 
建立源文件dllgenerator.cpp(不需要主函数,只写你需要动态调用的函数)
  1. // 整数加法和乘法
  2. int Add(int a, int b){
  3. return a + b;
  4. }
  5. int Mul(int c, int d){
  6. return c * d;
  7. }
建立头文dllgenerator.h(一定要把函数声明写好)
  1. int Add(int, int);
  2. int Mul(int, int);
建立源文件dllmain.cpp(一定要包含#include<windows.h>)
    - 下面的函数是VS2013自动生成,没生成复制即可。其实是在创建工程项目时不选空项目时候vs自动生成的,但不选空项目会产生很多其他文件和依赖项,本文教你建立最纯净的工程,注意包含window.h
  1. // dllmain.cpp : 定义 DLL 应用程序的入口点。
  2. #include <windows.h>
  3. BOOL APIENTRY DllMain(HMODULE hModule,
  4. DWORD  ul_reason_for_call,
  5. LPVOID lpReserved
  6. )
  7. {
  8. switch (ul_reason_for_call)
  9. {
  10. case DLL_PROCESS_ATTACH:
  11. case DLL_THREAD_ATTACH:
  12. case DLL_THREAD_DETACH:
  13. case DLL_PROCESS_DETACH:
  14. break;
  15. }
  16. return TRUE;
  17. }
建立源文件Source.def
    - 建立方式如下图,选择 VisualC++ -> 模块定义文件(.def)
    - 在此文件第一行引号中填你的项目名称即可,EXPORTS下面列出要生成的函数名称 格式:“名称 @序号”)
  1. LIBRARY "DLLGenerator"
  2. EXPORTS
  3. Add @1
  4. Mul @2
 
点击菜单栏 生成 -> 生成解决方案 或者 按Ctrl+F5
输出栏显示 创建库 DLLGenerator.lib 和 生成 DLLGenerator.dll
 
lib文件里面有对dll文件的描述,所以生成的dll文件不要改名称,否则lib文件和dll文件无法对应
在项目方案目录里,Debug文件夹中可以找到DLLGenerator.lib 和 DLLGenerator.dll, 把这两个文件和工程的头文件(dllgenerator.h)移动到一个空文件夹(E:\dlltest\DLL)中,以后你的项目用到此dll就包含这个目录,至此动态库创建完毕。
 
 
项目调用动态库方法如下:
调用动态库是调用 .dll .lib .h 三个文件
文件 -> 新建 -> 项目 -> win32控制台应用程序 项目名称:DLLTestor

应用程序类型:控制台应用程序  附加选项:空项目
 
打开项目 -> 项目属性 -> 配置属性 -> VC++目录 -> 包含目录 加入DLLGenerator.h所在目录的绝对路径 (E:\dlltest\DLL),以分号间隔
打开项目 -> 项目属性 -> 配置属性 -> VC++目录 -> 库目录 加入DLLGenerator.lib所在目录的绝对路径 (E:\dlltest\DLL)
 
打开项目 -> 项目属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项 中填上DLLGenerator.lib(以分号间隔),点击右下角 应用 确定
 
工程调用dll时首先在工程文件目录中查找dll,找不到后在C:\Windows\System32 中找。所以我们自己项目简单调用dll时就把生成的dll文件复制到工程目录中,如果经常用可以把dll文件放到C:\Windows\System32中
 

新建源文件main.cpp
  1. #include<iostream>
  2. #include"dllgenerator.h"
  3. using namespace std;
  4. int main(){
  5. int a = 2;
  6. int b = 3;
  7. cout << Add(a, b) << endl;
  8. cout << Mul(a, b) << endl;
  9. }
点击菜单栏,调试 -> 开始执行(不调试)  或者按F5
运行结果:
至此调用动态库成功。

VS2013 c++ 生成和调用DLL动态链接库(.def 方法已验证OK)的更多相关文章

  1. VS2013环境生成和调用DLL动态链接库

    http://blog.csdn.net/u010273652/article/details/25514577 创建动态库方法: 创建动态库是生成 .dll .lib 两个个文件 文件 -> ...

  2. VS2015环境下生成和调用DLL动态链接库

    一.生成动态链接库: 1.打开VS2015->文件->新建->项目->Visual C++->Win32->Win32控制台应用程序->将名称改为dll_ge ...

  3. VS2013 C++ 生成与调用DLL(动态链接库) 需要验证

    转载:https://blog.csdn.net/s978697043/article/details/82429802 一.创建动态链接库(生成.dll .lib 两个文件) 文件→新建→项目 选择 ...

  4. C#中调用Dll动态链接库

    C#中调用Dll动态链接库 起始 受限于语言的不同,我们有的时候可能会用别人提供的函数及方法 或者其他的什么原因.反正就是要调!!! 恰巧别人所使用的的语言跟自己又不是一样的 这个时候想要调用别人的函 ...

  5. 学习反射例子,调用DLL窗体及方法

    创建类库,并添加新窗体,加入以下方法 public static string setText(string str) { return str; } 编译后把生成的DLL文件放入新项目的bin目录, ...

  6. 在vs2013下手把手创建/调用dll

    body { font: 16px } 参考了大佬的文章 首先,体会一下静态编译: 创建Win32Project,选DLL,添加一个.h和.cpp文件 点击生成解决方案,然后去debug目录下拷贝.l ...

  7. Windows下C语言调用dll动态链接库

    dll是windows下的动态链接库文件,下面记录一下在windows下如何调用C语言开发的dll动态链接库. 1.dll动态链接库的源代码 hello_dll.c #include "st ...

  8. Python调用DLL动态链接库——ctypes使用

    最近要使用python调用C++编译生成的DLL动态链接库,因此学习了一下ctypes库的基本使用. ctypes是一个用于Python的外部函数库,它提供C兼容的数据类型,并允许在DLL或共享库中调 ...

  9. c#下调用dll动态链接库[转]

    C# 调用传统的 API 动态链接库,是.NET开发经常被讨论的问题. 比如有这么一个动态链接库(delphi 语言): library DelphiDLL; uses SysUtils, Class ...

随机推荐

  1. 使用jQuery设置和获取css样式

  2. Win10 第三方浏览器无法上网或者上网速度慢 的终极解决方案

    请参考: https://blog.csdn.net/shouzei123/article/details/82862478 近期,工程师收到大量反馈360浏览器,极速模式无法打开网页,兼容模式无此问 ...

  3. WinMTR 网络测试工具-九五小庞

    WinMTR(建议优先使用) 百度下载工具 链接:https://pan.baidu.com/s/19ArKSTA2amsa4p6vHegDIQ 提取码:cy4y WinMTR是mtr工具在Windo ...

  4. 答应我,用了这个jupyter插件,别再重复造轮子了

    1 简介 在使用Python.R等完成日常任务的过程中,可能会经常书写同样或模式相近的同一段代码,譬如每次使用matplotlib绘制图像的时候可以在开头添加下面两行代码来解决中文乱码等显示问题: p ...

  5. Activiti7 绑定业务主键以及流程定义 流程实例的挂起和激活

    绑定业务主键businessKey /** * 绑定业务主键 */ @Test public void bindingBusinessKey() { // 获取RuntimeService Runti ...

  6. JAVA JDK 环境变量配置 入门详解 - 精简归纳

    JAVA JDK 环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 13 转载请注明出处!️ 目录 JAVA JDK 环境变量配置 入门详解 - 精简归纳 一.为什么j ...

  7. pytest测试框架 -- setup和teardown等

    一.用例运行级别 1.函数级别(setup.teardown 或 setup_function.teardown_function): 仅对处于同作用域的测试函数有效(该函数定义不在类中,则对非类中测 ...

  8. Spring源码解析 | 第一篇 :IntelliJ IDEA2019.3编译Spring5.3.x源码

    前言 工欲善其事必先利其器.学习和深读Spring源码一个重要的前提:编译源码到我们的本地环境.这样方便我们在本地环境添加注释.断点追踪.查看类或接口的继承关系等等,更加高效的学习Spring源码.个 ...

  9. JDK15正式发布,划时代的ZGC同时宣布转正

    你发任你发,我用Java8.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...

  10. 对vue的初步学习

    vue: vue:一个mvvm框架(库),和angular类似 比较容易上手 指令以v=xxx 一片html代码配合接送,在new一个vue实例 适合:移动端,小巧 vue基本雏形 v-model 一 ...