C++ 基础(五)使用vs2015封装c++生成.dll文件、.lib文件、.h文件后,给另一个工程使用:使用前,需配置头文件(.h)静态库(.lib)和 动态库(.dll )项目属性

一、简介

我是一个认真的人,要么不写,要么我就把步骤、截图、代码,一 一 附上,方便大家参考学习。

1、为什么要生成DLL和lib?

     就是为了给VS工程调用(比如C#调用、C++工程)。

2、C#为什么要调用DLL和lib?

C++写的程序,只能通过DLL的形式给C#调用。

3、如果我能在C++就能完成工作,需要用C#来写程序吗?

   不需要,因为C++效率要比C#效率高。但是安全性比不上C#。原因是C++非托管代码,C#是托管代码。

4、什么是托管代码与非托管代码?执行效率对比

不想多说,这篇文章完成能解释托管代码与非托管代码的执行效率对比。在同样的配置环境下,C++效率要比C#效率高出十几倍。十几倍啊,吓死人了。

http://www.cnblogs.com/loverswordsman/articles/1367131.html

好了,不多说了,下面看看如何封装吧

二、vs2015封装c++成dll和lib

    主要参考https://blog.csdn.net/mango_haoming/article/details/79996073

1、建立名称为creatDLL的工程

 该工程存放到我目录C:\Users\lanmage2\Desktop\C++test\test1\

2、往工程添加dll.h文件和对应的dll.cpp

其中,creatDLL.cpp和creatDLL.h文件在我建立工程的时候就有了。保留这两个文件,不作任何修改。

3、往dll.cpp和dll.h添加头文件

注意啊,一般先写dll.h,才写dll.cpp。因为头文件是作了一个概括,这个概括包括了定义的函数,而函数的具体实现,就在dll.cpp中完成。

dll.h:

#ifndef DLL_H
#define DLL_H

extern __declspec(dllexport)int add(int x, int y);
extern __declspec(dllexport)int sub(int x, int y);

#endif

dll.cpp:

#include"stdafx.h"
#include"dll.h"

int add(int x, int y)
{
	return x + y;
}

int sub(int x, int y)
{
	return x - y;
}

4、最后一步,生成解决方案

5、Debug下,生成了两个文件,即creatDLL.dll和creatDLL.lib

这两个文件,是整个工程编译下,生成的文件。以便给C#工程调用或其他工程调用。

注意啊,creatDLL.dll和creatDLL.lib是在整个工程下生成的,因为工程的名字就叫做creatDLL。它们(creatDLL.dll和creatDLL.lib)与文件creatDLL.h、文件creatDLL.cpp,没有半毛钱关系。

三、creatDLL.dll文件、creatDLL.lib文件、dll.h文件,给另一个工程使用

  好了,刚才建立的三个文件creatDLL.dll/creatDLL.lib/dll.h,现在要使用起来。

1、建立一个空的C++控制台工程:

其实这个test2工程,就只有一个main.cpp文件。

2、main.cpp代码

#include<iostream>
#include "dll.h"
//#include "creatDll.h"

using namespace std;

int main(int argc, char** argv)
{
	/*CcreatDll c1;
	cout << ncreatDll << endl;*/

	cout << add(1, 2) << endl
		<< sub(6, 3) << endl;

	getchar();
	return 0;
}

3、输出效果

4、OK,现在来看看配置吧,只有配置成功后,test2工程才能使用

主要参看https://blog.csdn.net/yimiyangguang185/article/details/52585332

4.1、配置头文件存放目录

把test1的dll.h拷贝到test2/include中,test2的include文件是自己建立的。

项目——属性:

编辑进去看看

4.2、配置lib文件

建立lib文件夹,拷贝test1的creatDLL.lib到其中。

工程---属性---配置属性---链接器---常规---附加库目录,其目的是添加lib目录

工程---属性---配置属性---链接器---输入---附加依赖项,其目的是添加lib文件

4.3、配置动态DLL

将creatDLL.dll拷贝到tests的debug下,就可以了

四、总结

1、以上关于.dll/.lib/.h文件的生成,配置已经全部完成。

2、主要lib配置,不但要配置目录,而且还要配置***.lib文件名。

3、大部分的博客只有生成,没有配置。并且大部分配置没有截图,这我最想吐槽的一点。

猜你喜欢

转载自blog.csdn.net/xpj8888/article/details/85204846