使用api 要先懂得怎么使用dll文件;
1.新建一个常规dll 
//dll.h
#ifndef DLL_H
#define DLL_H

#ifdef DLL_EXPORTS
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif

DLLEXPORT int add(int ,int);

#endif

//中间一段的意思是: 如果在工程里添加预定义宏DLL_EXPORTS 那DLLEXPORT 就指代__declspec(dllexport) 用于dll的导出(函数 变量 类等)
导出变量用 __declspec(dllexport) int a;
导出函数用 __declspec(dllexport) void foo();
导出类用 class __declspec(dllexport) a{};
如果应用程序需要调用dll中的函数,则需要用__declspec(dllimport)修饰,因此当工程中不包含DLL_EXPORTS预定义时,DLLEXPORT 就指代__declspec(dllimport) 这样生成dll程序和调用dll的程序可以使用同一个头文件
(ps:工程中会自动添加一个DLL_EXPORTS预定义,在属性—c\c++ —preprocesspr里面)
//dll.cpp
#include "dll.h"

int add(int x,int y){
return x+y;
}
这样在工程的debug目录下就生成了dll和lib文件

2.调用dll文件
新建一个控制台程序calldll
添加c++文件
//calldll.cpp
#include "dll.h"
#include <iostream>
int main(){
int z;
int x=1, y=2;
z=add(x,y);
std::cout<<z<<std::endl;
}
工程属性里设置
1)c\c++ - general - additional include directories里面添加头文件目录
2)linker -additional library directories 里添加lib文件的目录
3)linker -input -additonal dependencies 里添加lib的文件名
 编译通过后用行,会提示丢失dll.dll文件

解决:将dll.dll放在和exe同一目录下或放在c:\windows\system32目录下(Win64位操作系统且dll.dll不是64位而是32位的话放在c:\windows\syswow64目录下)

原文地址:http://blog.sina.com.cn/s/blog_a7e72e940101izkh.html

编写dll 关于declspec(dllexport)和declspec(dllimport)相关推荐

  1. declspec(dllexport)与_declspec(dllimport) 异同

    declspec(dllexport)与_declspec(dllimport) 异同 2010-11-08 18:51 1 _declspec(dllexport)与_declspec(dllimp ...

  2. 再写dll 关于declspec(dllexport)和declspec(dllimport)

    使用api 要先懂得怎么使用dll文件: 1.新建一个常规dll //dll.h #ifndef DLL_H #define DLL_H #ifdef DLL_EXPORTS #define DLLE ...

  3. 使用vs2019编写dll

    本文通过一个demo演示dll的编写和调用. 一.编写dll 首先编写一个dll,它提供一个加法函数. 使用visual studio新建项目,我把项目命名为AddDll,选择模板windows桌面向 ...

  4. BCB 编写 DLL 终极手册

    BCB 编写 DLL 终极手册 一. 编写 DLL File/New/Dll 生成 Dll 的向导,然后可以添加导出函数和导出类 导出函数:extern "C" __declspe ...

  5. 编写DLL所学所思(1)——导出函数

    烛秋  http://www.cnblogs.com/cswuyg/archive/2011/09/30/dll.html 动态链接库的使用有两种方式,一种是显式调用.一种是隐式调用. (1)     ...

  6. windows下编写dll

    dll的优点 简单的说,dll有以下几个优点: 1) 节省内存.同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内存中.如果 ...

  7. c/c++编写dll供其他语言调用

    范例 就以md5为例吧,首先去github搜索md5,选一个用c或者c++写的md5. 比如:https://github.com/chinaran/Compute-file-or-string-md ...

  8. qt编译c语言dll,QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

    最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了不少人家的SDK,绝大部分用VC编写,并且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,因 ...

  9. 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用

    这段时间要把tinyxml从静态库弄成动态库,要用到__declspec(dllexport)和__declspec(dllimport)来导出dll和lib文件.终于弄明白了export和impor ...

  10. .net core 调用c dll_Qt编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

    一.前言 最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0 ...

最新文章

  1. 内科学与计算机专业的相关性,急性心肌梗死患者QT间期变异性及心率变异性与室性心律失常的相关性分析-内科学专业论文.docx...
  2. .bat文件(%~dp0)和call、echo批处理环境变量
  3. ios开发学习笔记--Core Motion
  4. CAS 4.0.0RC 配置MD5验证功能
  5. cordova常用命令
  6. lex编译dos命令_微软新的命令行工具:Windows Terminal
  7. G少爷上证技术分析 8月31日
  8. 【多线程高并发】深入浅出可见性
  9. 【Python】程序的分支结构之异常处理
  10. abb智能控制系统_ABB助力国网冀北电力打造虚拟电厂
  11. Python面试常用二十题总结
  12. leetcode-sort-colors
  13. 【今日CV 计算机视觉论文速览 第110期】Thu, 2 May 2019
  14. Python:身份运算符is和==的区别
  15. JavaScript实现map
  16. [内附完整源码和文档] 基于JSP实现的网上商城系统
  17. html中的reset(重置)按钮
  18. sqlmap的简单使用(sql注入)
  19. 移动花卡服务器系统异常,开通了抖音移动花卡免流服务,为什么使用抖音不显示免流呢?...
  20. 赛博念经!自带RGB的电子木鱼,能敲出《般若心经》,网友:想买

热门文章

  1. matlab拉普拉斯算子边缘提取_【图像处理】OpenCV系列十 --- 边缘检测之Laplacian算子...
  2. php 5的手册,本手册中所涉及的 PHP 版本 - PHP 5 中文文档
  3. roads 用户体验标准_手持海外通行证,海信激光电视征服全球用户!
  4. 删改数据如何避免锁表?等等,啥是锁呀
  5. prometheus监控mysql指标_使用Prometheus监控MySQL状态
  6. 05-1_部署 master 节点
  7. farm ugly chicken kick(fuck)这个计算机词汇的由来
  8. mongodb索引 多健索引
  9. Spring框架——day04参数校验和文件上传
  10. [LeetCode]319. Bulb Switcher灯泡开关