一、动态链接库的生成

  1. 首先利用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++)的更多相关文章

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

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

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

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

  3. C/C++中动态链接库的创建和调用

    DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...

  4. C++(VS2012)DLL动态库的生成和调用

    DLL动态链接库的生成: 首先打开VS2012,新建——项目——Win32控制台应用程序(项目名称:ConsoleApplication1)——空项目 新建一个源文件source.cpp 先用控制台e ...

  5. vc6静态库的生成和调用

    转自vc6静态库的生成和调用 1.静态库的生成: 在vc6.0++中Ctrl+N选择Projects下的Win32 Static Library,Project name:SumLib,点击OK,下一 ...

  6. [转贴] C/C++中动态链接库的创建和调用

    DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...

  7. 分享:根据webservice WSDL地址自动生成java调用代码及JAR包

    分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...

  8. Keil中LIB库的作用、生成与调用

    LIB库有什么用,一个简单的例子就是Silicon Labs为C8051F单片机USB提供的USBXpress LIB库了,如USB发送数据.接收数据等,都是通用性很强的函数,但因为保密的原因,这个函 ...

  9. Keil C 里面Lib库文件的生成与调用

    源:Keil C 里面Lib库文件的生成与调用

随机推荐

  1. NFS的搭建及配置

    [root@centos199 conf]# rpm -q nfs-utils rpcbind #查看这两个包是否安装,如未安装则用yum安装nfs-utils-1.2.3-39.el6.x86_64 ...

  2. Python编程Day1——计算机组成与操作系统

    一..计算机基础 二.编程与编程的目的 1.什么是语言? 一种事物与另外一种事物沟通的介质 编程语言是程序员与计算机沟通的介质 2.什么是编程? 程序员把自己想要让计算机做的事用编程语言表达出来,编程 ...

  3. IO 和 NIO 的思考

    输入输出是操作系统不可或缺的一部分,大致分为两类:面向磁盘和面向网络.在 Java 中有3种 I/O 类型:BIO.NIO 和 AIO,分别是同步阻塞.同步非阻塞和异步非阻塞 I/O,这里着重描述 B ...

  4. C# 反射 判断类的延伸类型

    判断类型是否被继承.实现 1.判断是否实现了指定接口 添加测试类: public class TestClass2 : TestClass1 { } public class TestClass1 : ...

  5. PHP进程信号处理

    PHP进程信号处理 php有一组进程控制函数PCNTL,使得php能在*nix系统中实现跟c一样的创建子进程.使用exec函数执行程序.处理信号等功能. 注意:pcntl这个扩展仅在cli/cgi模式 ...

  6. CSS中盒模型的理解

    今天突然看到一篇关于CSS中盒模型的文章,忽然觉得自己竟然遗忘了很多小的地方,所以写一篇文章来记忆一下 (摘抄于千与千寻写的CSS盒子模型理解,并在自己基础上添加了一些东西,希望更完善,对大家有帮助) ...

  7. 判断点在多边形内算法的C++实现

    目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...

  8. python网络爬虫-中国大学排名定向爬虫

    爬虫定向爬取中国大学排名信息 #!/usr/bin/python3 import requests from bs4 import BeautifulSoup import bs4 #从网络上获取大学 ...

  9. 本地服务器硬件信息获取指令wmic

    获取BIOS序列号 wmic bios list full | find "SerialNumber" SerialNumber=P50168VB 获取CPUID(WIN32_PR ...

  10. sqlserver安装报错:an error was encountered 数据无效

    解决方法:下载的包损坏,重新下载包