DLL导出类和导出函数
from:https://blog.csdn.net/goodluckmt/article/details/52691297
1、动态库DLL中的类或者函数有时候要被其他的库调用,因此需要被其他库调用的类或者函数需要进行导出。
2、首先编写需要导出的DLL,新建一个工程设置应用程序类型为DLL
3、类的代码如下
头文件
- #pragma once
- #define EX_PORT __declspec(dllexport)
- using namespace std;
- extern "C" int __declspec(dllexport) subVal(int a, int b);
- class EX_PORT exportClass //#define EX_PORT __declspec(dllexport)
- {
- public:
- exportClass();
- ~exportClass();
- int addVal(int a, int b)
- {
- return a + b;
- }
- };
CPP
- #include "stdafx.h"
- #include "exportClass.h"
- #include <iostream>
- int subVal(int a, int b)
- {
- return a - b;
- }
- exportClass::exportClass()
- {
- cout << "oh,myGod" << endl;
- //AfxMessageBox(_T("oh,yes"));
- }
- exportClass::~exportClass()
- {
- }
4、调用DLL的EXE要设置附加包含目录,附加库目录,设置DLL的路径到exe目录之下。
5、然后在主程序之中就可以引用了。
- // mainProess.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include "exportClass.h"
- #include <stdio.h>
- //#pragma comment(lib,"Dllexport1.lib") //这句话和在附加依赖项中添加lib文件的作用一样,所以在这里就可以不添加了
- int _tmain(int argc, _TCHAR* argv[])
- {
- exportClass ex;
- int c = ex.addVal(5, 6);
- CString str;
- str.Format(_T("%d"), c);
- AfxMessageBox(str);
- int d = subVal(5, 6);
- return 0;
- }
其中
- 1、#pragma comment(lib,"Dllexport1.lib") 这句话和在附加依赖项中添加lib文件的作用一样,所以在这里就可以不添加了。
2、DLL中只要导出的类和函数才能被其他程序调用,其他如果不带有
- extern "C" int __declspec(dllexport) 类似的标志的常规函数是无法被其他程序调用
DLL导出类和导出函数相关推荐
- 关于通过dll导出类模板和函数模板
动态链接库中导出模板函数 C++ 支持函数模板,利用函数模板,可以简化我们的程序代码.我在自己的代码中也经常用到函数模板,但是以前一直以为函数模板是要放到头文件中的,否则调用模板函数时,编译器会找不到 ...
- java导出类_java导出excel工具类
java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...
- 编写DLL所学所思(2)——导出类
2011.10.6 烛秋 一.导出类的简单方式 这种方式是比较简单的,同时也是不建议采用的不合适方式. 只需要在导出类加上__declspec(dllexport),就可以实现导出类.对象空间还是在使 ...
- MFC制作DLL(导出类和函数)
学了2天MFC导出DLL,发现网上描述的都不是很彻底,我这里给一个教程,希望大家能参考一次成功. 我用VC6,其他版本基本雷同. 首先,VC6新建项目,如下图流程: 点击文件–保存工作空间,把我们的劳 ...
- C++关于DLL导出模板类和模板函数
这两天写了个Dll,要导出普通类中的模板函数,稍微查了一下,没查到具体资料.自己根据C++模板的编译原理,推断出应该要源码放在头文件中直接导出,查了下接触的Open Source项目,确实如此.这里记 ...
- dll的概念、dll导出类(转)
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...
- DLL入门浅析(4)——从DLL中导出类
前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了. DLL头文件: #ifndef _DLL_SAMPLE_H #de ...
- C++dll导出类的方式__declspec(dllexport)
前言 有时导出dll的时候既想用到整个类又想保持多态 一.直接导出整个类 示例: 头文件 #ifdef AITWapper_EXP //根据项目是导入导出预定义 #define AITWapper_D ...
- C++ DLL总结—静动态调用、导出类
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...
最新文章
- JNI的native代码中打印日志到eclipse的logcat中
- java新建常量_【Java】常量 - 每日坚果的个人空间 - OSCHINA - 中文开源技术交流社区...
- [转] 让Visual Studio生成Release版本的可执行文件
- Swift基础:创建第一个Swift工程:Swift的基本语法
- 解决后退,清空验证码(其它文本框保留)
- 假设一动态集合S用一个长度为m的直接寻址表T来表示。请给出一个查找S中最大元素的过程。(算法导论第十一章11.1-1)
- Java 8 Friday Goodies:Lambda和排序
- 更改项目project名称,与项目名称;
- Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图
- 在 RHEL 和 CentOS 上检查或列出已安装的安全更新的两种方法
- scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
- 几何画板椭圆九种画法_几何画板怎么制作椭圆定义演示动画?
- cass道路设计教程_cass道路曲线设计
- VS2013下载网址及破解注册码
- 放弃国企工作、花2万参加培训班,只为挤进互联网大厂
- ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
- SVN的目录结构,trunk、tag、branches
- 华为云服务之公有云架构
- Tableau实现世界GDP排名动态图
- c#物联网_基于C#实现日志记录与SQL SERVER的双向存储工控数字化之旅