当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件。下面介绍下如何生成lib文件。
以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件。
一、按照下图新建Win32项目TestLib。
二、选择静态库,取消预编译。
三、新建完工程后,我们创建一个头文件和一个cpp文件。
TestLib.h
#pragma once void HelloWorld();
TestLib.cpp
#include <stdio.h> #include "TestLib.h" void HelloWorld() { printf("Hello World "); }
编译该工程后,我们得到一个TestLib.lib文件。
四、再新建一个Win32控制台程序TestApp,进行测试。
在TestApp.cpp里引入TestLib.h
// TestApp.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "..TestLibTestLib.h" int main() { HelloWorld(); return 0; }
指定TestLib.lib的路径,方法如下:
右键TestApp项目,点击属性,进入下图,在【连接器】--【输入】--【附加依赖项】里输入TestLib的路径。这里写的是相对路径 $(OutputPath)TestLib.lib。
这样即使把我们的项目移到其他的目录里,依然能够进行debug。
五、把TestApp项目设定成启动项。
六、编译后,得到运行结果
从上面可以看出我们的lib项目里的TestLib.cpp是cpp文件,即C++文件。
如果我们把TestLib.cpp改成TestLib.c的话,这时候重新编译lib工程,然后运行TestApp,
会出现如下错误:
有时候,可能因为某种原因,lib文件必须是C语言,那么该怎么解决?
这时候,我们需要更改我们TestLib.h这个文件。
#pragma once #ifdef __cplusplus extern"C" { void HelloWorld(); #endif #ifdef __cplusplus } #endif