from:https://blog.csdn.net/goodluckmt/article/details/52691297

1、动态库DLL中的或者函数有时候要被其他的库调用,因此需要被其他库调用的类或者函数需要进行导出。

2、首先编写需要导出的DLL,新建一个工程设置应用程序类型为DLL

3、类的代码如下

头文件

[html] view plain copy
  1. #pragma once
  2. #define EX_PORT __declspec(dllexport)
  3. using namespace std;
  4. extern "C" int __declspec(dllexport)  subVal(int a, int b);
  5. class EX_PORT exportClass  //#define EX_PORT __declspec(dllexport)
  6. {
  7. public:
  8. exportClass();
  9. ~exportClass();
  10. int addVal(int a, int b)
  11. {
  12. return a + b;
  13. }
  14. };

CPP

[cpp] view plain copy
  1. #include "stdafx.h"
  2. #include "exportClass.h"
  3. #include <iostream>
  4. int subVal(int a, int b)
  5. {
  6. return a - b;
  7. }
  8. exportClass::exportClass()
  9. {
  10. cout << "oh,myGod" << endl;
  11. //AfxMessageBox(_T("oh,yes"));
  12. }
  13. exportClass::~exportClass()
  14. {
  15. }

4、调用DLL的EXE要设置附加包含目录,附加库目录,设置DLL的路径到exe目录之下。
5、然后在主程序之中就可以引用了。

[cpp] view plain copy
  1. // mainProess.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include "exportClass.h"
  5. #include <stdio.h>
  6. //#pragma comment(lib,"Dllexport1.lib") //这句话和在附加依赖项中添加lib文件的作用一样,所以在这里就可以不添加了
  7. int _tmain(int argc, _TCHAR* argv[])
  8. {
  9. exportClass ex;
  10. int c = ex.addVal(5, 6);
  11. CString str;
  12. str.Format(_T("%d"), c);
  13. AfxMessageBox(str);
  14. int d = subVal(5, 6);
  15. return 0;
  16. }

其中

[cpp] view plain copy
  1. 1、#pragma comment(lib,"Dllexport1.lib") 这句话和在附加依赖项中添加lib文件的作用一样,所以在这里就可以不添加了。

2、DLL中只要导出的类和函数才能被其他程序调用,其他如果不带有

[html] view plain copy
  1. extern "C" int __declspec(dllexport) 类似的标志的常规函数是无法被其他程序调用

DLL导出类和导出函数相关推荐

  1. 关于通过dll导出类模板和函数模板

    动态链接库中导出模板函数 C++ 支持函数模板,利用函数模板,可以简化我们的程序代码.我在自己的代码中也经常用到函数模板,但是以前一直以为函数模板是要放到头文件中的,否则调用模板函数时,编译器会找不到 ...

  2. java导出类_java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  3. 编写DLL所学所思(2)——导出类

    2011.10.6 烛秋 一.导出类的简单方式 这种方式是比较简单的,同时也是不建议采用的不合适方式. 只需要在导出类加上__declspec(dllexport),就可以实现导出类.对象空间还是在使 ...

  4. MFC制作DLL(导出类和函数)

    学了2天MFC导出DLL,发现网上描述的都不是很彻底,我这里给一个教程,希望大家能参考一次成功. 我用VC6,其他版本基本雷同. 首先,VC6新建项目,如下图流程: 点击文件–保存工作空间,把我们的劳 ...

  5. C++关于DLL导出模板类和模板函数

    这两天写了个Dll,要导出普通类中的模板函数,稍微查了一下,没查到具体资料.自己根据C++模板的编译原理,推断出应该要源码放在头文件中直接导出,查了下接触的Open Source项目,确实如此.这里记 ...

  6. dll的概念、dll导出类(转)

    1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...

  7. DLL入门浅析(4)——从DLL中导出类

    前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了. DLL头文件: #ifndef _DLL_SAMPLE_H #de ...

  8. C++dll导出类的方式__declspec(dllexport)

    前言 有时导出dll的时候既想用到整个类又想保持多态 一.直接导出整个类 示例: 头文件 #ifdef AITWapper_EXP //根据项目是导入导出预定义 #define AITWapper_D ...

  9. C++ DLL总结—静动态调用、导出类

    1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...

最新文章

  1. JNI的native代码中打印日志到eclipse的logcat中
  2. java新建常量_【Java】常量 - 每日坚果的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. [转] 让Visual Studio生成Release版本的可执行文件
  4. Swift基础:创建第一个Swift工程:Swift的基本语法
  5. 解决后退,清空验证码(其它文本框保留)
  6. 假设一动态集合S用一个长度为m的直接寻址表T来表示。请给出一个查找S中最大元素的过程。(算法导论第十一章11.1-1)
  7. Java 8 Friday Goodies:Lambda和排序
  8. 更改项目project名称,与项目名称;
  9. Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图
  10. 在 RHEL 和 CentOS 上检查或列出已安装的安全更新的两种方法
  11. scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
  12. 几何画板椭圆九种画法_几何画板怎么制作椭圆定义演示动画?
  13. cass道路设计教程_cass道路曲线设计
  14. VS2013下载网址及破解注册码
  15. 放弃国企工作、花2万参加培训班,只为挤进互联网大厂
  16. ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
  17. SVN的目录结构,trunk、tag、branches
  18. 华为云服务之公有云架构
  19. Tableau实现世界GDP排名动态图
  20. c#物联网_基于C#实现日志记录与SQL SERVER的双向存储工控数字化之旅

热门文章

  1. Transaction 那点事儿,Spring事务管理
  2. 应该把script标签放在哪里
  3. 背包问题(动态规划)
  4. axios 设置拦截器 全局设置带默认参数(发送 token 等)
  5. Doracle.jdbc.J2EE13Compliant=true
  6. angularJs关于指令的一些冷门属性
  7. oracle RAC切换归档
  8. hdu 3177贪心
  9. HDU 4279 - Number
  10. 02 - 替换SetInput方法 VTK 6.0 迁移 (2013-06-30 16:22)