跳至主要內容

静态链接库

chanchaw大约 2 分钟cpp

概述

创建解决方案

创建静态链接库项目
创建静态链接库项目

如果是 vs2008 创建的静态库项目,如下图,不要在 IDE 创建的默认文件中编写自己的代码,要手动创建一个和项目同名的文件 LibTest.cpp 编写代码

vs2008创建的静态库项目
vs2008创建的静态库项目

案例

通过上面方法创建一个静态库的解决方案,本案例使用 vs2017 所以 IDE 默认创建了 LibTest.cpp 文件用于编写自定义的代码,不需要手动创建该文件了。 在项目 “头文件” 目录下创建文件 Inc.h,代码如下

#pragma once
// 上面代码防止头文件被多次引用
// 下面代码的 extern "C" 是为了防止编译后函数名称被修改
// 后面 int 开始是真正的函数签名
extern "C" int add(int a, int b);

然后在文件 LibTest.cpp 中编写自定义的代码,下面代码中还演示了如何使用 string,其中函数 int add 是为了实现上面头文件声明的函数,并且之后调用者会调用该函数

// LibTest.cpp : 定义静态库的函数。
#include "pch.h"
#include "framework.h"
#include "Inc.h"
#include "string"
using namespace std;

// TODO: 这是一个库函数示例
void fnLibTest()
{
}

int add(int a, int b) {
	return (a+b);
}

string getVersion() {
	return "我是版本号";
}

调用方法

在上面静态库解决方案下同 LibTest 项目创建兄弟项目用于测试静态库,命名调用项目为 LibCall,创建控制台应用程序作为调用项目,入口函数文件的所有代码如下

#include <iostream>
#include "../LibTest/Inc.h"
#pragma comment(lib, "../debug/LibTest.lib")

int main()
{
	int iRet = add(1,3);
	printf_s("1+3=%d\r\n", iRet);
	system("pause");
}

注意上面包含头文件 Inc.h 和引用静态库 LibTest.lib 的路径有点诡异,见下图解释:

测试静态库项目引用文件路径的注意点
测试静态库项目引用文件路径的注意点

仓库

源码的项目仓库open in new window