VS2010动态链接库的生成及调用(C++)
一、动态链接库的生成
首先利用VS2010新建一个空的工程或者win32工程

2.在工程中添加头文件和源文件

3.工程属性配置
3.1 可以在解决方案目录下新建以下几个文件夹
bin (用于存放Release编译生成的dll或exe文件)
bin_debug(用于存放Debug编译生成的dll或exe文件)
lib(用于存放Release编译生成的lib文件)
lib_debug(用于存放Debug编译生成的lib文件)
include(用于存放dll库对应的.h文件)
3.2设置工程属性
选中Algorithm工程——右键选中Properties
说明:若是Release编译将Output Directory设置为:..\bin
Import Library设置为:..\lib\$(TargetName).lib


3.3 DllDemon程序的编写
//Algorithm.h
#ifndef ALGORITHM_H_
#define ALGORITHM_H_
class _declspec(dllexport) McsfAlgorithm
{
public:
McsfAlgorithm();
~McsfAlgorithm();
int Add(int, int);
int Sub(int, int);
};
#endif
//Algorithm.cpp
#include "Algorithm.h"
McsfAlgorithm::McsfAlgorithm()
{ } McsfAlgorithm::~McsfAlgorithm()
{ } int McsfAlgorithm::Add(int firstNum, int secondNum)
{
return firstNum + secondNum;
} int McsfAlgorithm::Sub(int firseNum, int secondNum)
{
return firseNum - secondNum;
}
3.4编译DllDemon工程,可以看到对应目录下生成的dll文件和lib文件

二、动态链接库的调用
1、在此解决方案下新建一个空的工程DllTestOperation,然后添加.cpp文件
2、配置DllTestOperation的工程属性,如下




3 main.cpp对应的代码
//main.cpp
#include "Algorithm.h"
#include <memory>
#include <iostream>
int main(int argc, char *argv[])
{
std::shared_ptr<McsfAlgorithm> myOpertion(new McsfAlgorithm());
int testNum1 = myOpertion->Add(,);
int testNum2 = myOpertion->Sub(,);
std::cout<<"testNum1 = "<<testNum1<<std::endl;
std::cout<<"testNum2 = "<<testNum2<<std::endl;
return ;
}
4. 编译此工程,运行结果如下:

总结:
1)包含dl对应的头文件
2)加入lib文件及其对应的目录
3)输出目录与dll的输出目录一致
4)与dll工程保持相同的编译平台(win32 或 X64)
VS2010动态链接库的生成及调用(C++)的更多相关文章
- VS2015环境下生成和调用DLL动态链接库
一.生成动态链接库: 1.打开VS2015->文件->新建->项目->Visual C++->Win32->Win32控制台应用程序->将名称改为dll_ge ...
- VS2013 C++ 生成与调用DLL(动态链接库) 需要验证
转载:https://blog.csdn.net/s978697043/article/details/82429802 一.创建动态链接库(生成.dll .lib 两个文件) 文件→新建→项目 选择 ...
- C/C++中动态链接库的创建和调用
DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...
- C++(VS2012)DLL动态库的生成和调用
DLL动态链接库的生成: 首先打开VS2012,新建——项目——Win32控制台应用程序(项目名称:ConsoleApplication1)——空项目 新建一个源文件source.cpp 先用控制台e ...
- vc6静态库的生成和调用
转自vc6静态库的生成和调用 1.静态库的生成: 在vc6.0++中Ctrl+N选择Projects下的Win32 Static Library,Project name:SumLib,点击OK,下一 ...
- [转贴] C/C++中动态链接库的创建和调用
DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...
- 分享:根据webservice WSDL地址自动生成java调用代码及JAR包
分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...
- Keil中LIB库的作用、生成与调用
LIB库有什么用,一个简单的例子就是Silicon Labs为C8051F单片机USB提供的USBXpress LIB库了,如USB发送数据.接收数据等,都是通用性很强的函数,但因为保密的原因,这个函 ...
- Keil C 里面Lib库文件的生成与调用
源:Keil C 里面Lib库文件的生成与调用
随机推荐
- 面向对象(__str__和__repr__方法)
#Author : Kelvin #Date : 2019/1/21 16:19 class App: def __init__(self,name): self.name=name # def __ ...
- 构建现代Web应用时究竟是选择传统web应用还是SPA
在大前端盛行的今天,似乎前后端分离的开发模式才是大势所趋,而SPA的概念更是应运而生.现在随便构建一个web应用程序如果你不是使用SPA的话,就会感觉有点low,但是真的是这样吗?今天这篇文章我们就来 ...
- 一个请求过来都经过了什么?(Thrift版)
一.背景 最初遇到这个问题是去58面试.部门领导是原同事,所以面试比较水.水到什么程度呢? 面试就是走个形式而已,不会不过的. 一面面试官就问了一个问题:“一个请求过来都经过了什么?” 剩下的全是闲 ...
- SpringBoot进阶教程(二十二)集成RabbitMQ---MQ实战演练
RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.RabbitMQ是流行的开源消息队列系统,用erlang语言开发.Rab ...
- DI是实现面向切面和面向抽象的前提
DI越来越重要 DI就是依赖注入,现在来说,大部分框架都是以DI为基础组件的,每一个框架都有自己的DI组件,像dotnet core,java spring等,也都为自己的框架量身打造了DI工具. 面 ...
- 一套代码小程序&Web&Native运行的探索04——数据更新
接上文:一套代码小程序&Web&Native运行的探索03 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/m ...
- Docker进阶之四:镜像管理
一.什么是镜像? 简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统. 二.镜像从哪里来? Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容 ...
- spring的理解
看过<fate系列>的博友知道,这是一个七位英灵的圣杯争夺战争.今天主要来谈谈圣杯的容器概念,以便对spring的理解. 圣杯: 圣杯本身是没有实体的,而是将具有魔术回路的存在(人)作为“ ...
- oracle学习笔记(五) SQL操作符
SQL操作符 算术操作符:+加,-减,*乘,/除 比较操作符: <,>,=,!=,<>,<=,>= 常用的判断,<>和!=相同 between $low ...
- Android Material Design控件使用(四)——下拉刷新 SwipeRefreshLayout
使用下拉刷新SwipeRefreshLayout 说明 SwipeRefreshLayout是Android官方的一个下拉刷新控件,一般我们使用此布局和一个RecyclerView嵌套使用 使用 xm ...