原文转自https://www.cnblogs.com/ahcc08/p/6810033.html。
原文基础上我会根据初学者的特点标注一些注意点以及稍许改动以便让初学者有更好的学习体验。
当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件。下面介绍下如何生成lib文件。 以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件。 一、按照下图新建Win32项目TestLib。
二、选择静态库,取消预编译。
三、新建完工程后,我们创建一个头文件和一个cpp文件
注意:此处需要创建的头文件和c++源文件需要在本工程TestLib下右键点击对应的头文件或者源文件添加新建项,如下图所示
TestLib.h
TestLib.cpp
编译该工程后,我们得到一个TestLib.lib文件。
注意:此处的TestLib.lib文件生成的位置在Debug目录下
四、再新建一个Win32控制台程序hello,进行测试。
在TestApp.cpp里引入TestLib.h
注意:此处是#include"TestLib.h"我给大家演示的时候是因为.cpp文件和.h文件是在同一个folder下的所以没有用到路径,比如如果不在同一文件夹会为#include"../TestLib/TestLib.h”。
因为这个目前不是一个win32控制台应用程序工程在属性里面左边任务栏没有链接器选项来加载附加包含目录。
指定TestLib.lib的路径,方法如下:
右键Hello项目,点击属性,进入下图,在【链接器】--【输入】--【附加依赖项】里输入TestLib的路径。
五、把Hello项目设定成启动项。
六,右键点击工程名Hello选择”生成”进行编译,运行得到结果。
得到这些lib之后,你直接把它们放在你的工程下面使用即可。
从上面可以看出我们的lib项目里的TestLib.cpp是cpp文件,即C++文件。 如果我们把TestLib.cpp改成TestLib.c的话,这时候重新编译lib工程,然后运行Hello就会报错
有时候,可能因为某种原因,lib文件必须是C语言,那么该怎么解决? 这时候,我们需要更改我们TestLib.h这个文件。
为了在C++代码中调用用C写成的库文件,就需要用extern"C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。