使用Visual Studio 2017写静态库

造轮子是一件有趣的事情,VS是一个强大的工具,能胜任超大规模的工程,但是讲真,对不那么大的项目配置起来不是那么友好(网上的其他教程也一点都不友好Orz)。这里就展示一下构建一个简单的静态库的正确姿势。(顺便教一点道理

创建解决方案——许多人搞不清工程/项目Project和解决方案Solution的区别,在VS中,Project是基本的执行单元,一个Solution可以包含多个Project——我们的静态库就将会包含几个(.lib)Project和一个(.exe)Project用作测试。解决方案选win32 Console Application控制台。

类型选Static Library静态库,去掉Precompiled Header预编译头选项。

添加头文件和源文件。

源文件.cpp同理,之后应该是这个样子:

(注意,只添加.h文件而没有.cpp是不行的,这样一个工程编译不出来.lib库,之后你测试的时候就会出现" "xxx.lib": cannot open file specified"之类的报错别问我怎么知道的Orz)

(另一种回头cannot open file specified的原因是.lib生成的位置不对,在这里看Solution Explorer->Properties属性页

->Output Direction输出目录

默认那个是对的在\Debug目录下,谁知道怎么会错)

然后就可以写代码了:

//  MathLib.h
#pragma once
int add(int x, int y);
//  MathLib.cpp
#include "MathLib.h"
int add(int x, int y) { return x + y; }

然后你需要一个Project来测试(回想开头说的,一个Solution可以有多个Project,它们都是执行单位(一会会再讲到怎么叫执行单位这是我自己造的概念)),在Solution Explorer里面为Solution加入新工程:

选控制台,把预编译头去掉和之前一样,现在我们得到了一个含有俩Projects的Solution了:

编写一段测试代码

//  Test.cpp

#include "stdafx.h"
#include "..\MathLib\MathLib.h"
#include <iostream>

int main()
{
  std::cout << add(1, 2) << std::endl;
  return 0;
}

现在需要为Test添加MathLib的引用,这一步实际的作用是,在引导IDE用cl编译器命令行编译的时候,加入正确的链接选项(CSAPP有非常inspiring的讲解,源文件#include了头文件以后只是为链接器介绍了一堆未重定位的符号,它需要在库文件(静态库的话Linux是.a文件Windows是.lib)里找这些符号完成重定位),找到这些库很重要。在Solution Explorer里面Add Reference如图

VS很贴心地把Solution里的Projects列进了备选项,选中即可。

此时Test的Reference里就有MathLib工程了。

下一步,为cl编译器添加include路径,也就是说,预编译期应该怎么找MathLib.h以完成符号的引入。在Test Properties属性页->C++->General->Additional Include Directaries附加包含路径,就是额外于标准库头文件目录的其他(自定义)头文件包含的目录,cl要去这些地方找MathLib.h。选择添加MyStaticLibrary\MathLib这个目录OK。

这个时候万事俱备,F5组建运行结果报了这么个错:

说.lib不是有效的win32应用不能运行。对呀我本来也没要运行它呀,可是VS怎么知道Solution里面这么多Projects应该运行哪一个?(想想之前的执行单元理解到是什么意思了吧,每个Project编译的结果都认为可执行)第一个添加的Project是MathLib所以VS默认去运行它的输出所以错了。想办法引导VS去运行Test的输出(Test.exe),Solution Explorer->MyStaticLibrary Properties属性页:

设单启动工程为Test,OK。

Build & Run!

祝大家造轮子愉快!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Visual Studio 2017设置版权的方法

    VisualStudio2017如何设置版权,具体内容如下 1.VisualStudio2017设置版权 a 在团队开发或者公司开发中,我们一般都喜欢给自己所创建的类或者接口以及其它模板设置版权说明,但是每个类一个一个的去加又是非常的费劲,所以一般情况下我们都是设置模板来实现它,当您在VS中创建类或者接口等的时候自动将这些注释添加到您所在的类或者接口中. b 在网上有很多的方法可以实现这个模板的功能,但是在VS2017中都不太实用,所以这里我简单总结了一下给VS2017添加版权的说明 c 我所有

  • 精彩回顾!Visual Studio 2017正式版发布全纪录

    又是一年发布季,微软借着Visual Studio品牌20周年之际,于美国太平洋时间2017年3月7日9点召开发布会议,宣布正式发布新一代开发利器Visual Studio 2017.同时发布的还有 .NET Core Tooling 1.0 .NET Core Microservice instance Visual Studio for MAC preview 4 Visual Studio Mobile Center Preview Team Foundation Server 2017

  • Microsoft Visual Studio 2017 for Mac Preview安装使用案例分享

    本文为大家详细介绍了Microsoft Visual Studio 2017 for Mac Preview 下载.安装.案例Demo 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤,扛不住了,就把我的Mac放在公司. Mac之前为了运行VS,还买了一个PD虚拟机... 现在,我终于喝到鸡汤了--随着Visual Studio 2017的发布,for Mac的版本也诞生了! 下载地址大家可以去visualstudio官网下载,不过可能会有点儿慢,我上传了百度云.文章最后提供下载.

  • Visual Studio 2017安装心得总结

    既然VS2017已经发布了,就想安装一下试试,先卸载VS2015, 网上有个完全卸载的东东,https://github.com/Microsoft/VisualStudioUninstaller/releases 听说安装完VS2017需要60G,我的C盘不够,只能用虚拟机安装了. 下载地址:https://www.visualstudio.com/zh-hans/downloads/ 微软的VS2017更改了安装方式,不再提供ISO包,只能下载离线安装文件了, 复制代码 代码如下: F:\v

  • Visual Studio 2017 ASP.NET Core开发

    Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行ASP.NET Core开发. 新的ASP.NET Core项目为csproj ,打开之前的xproj项目,会提示单向升级,确认以后,会自动帮你升级至csproj. 新建项目 VS 2017新建ASP.NET Core 项目: 确定以后 可选择ASP.NET Core 1.0 和ASP.NET Co

  • Visual Studio 2017正式版离线安装教程

    Visual Studio 2017 RTM正式版离线安装及介绍. 首先至官网下载:https://www.visualstudio.com/zh-hans/downloads/ VS 2017 正式版介绍:https://www.visualstudio.com/zh-hans/vs/whatsnew/ VS 2017 离线模式只离线.NET Core部分: Visual Studio Professional 2017: vs_professional.exe--layoutD:\vs201

  • Visual Studio 2017正式版发布 Mac版新功能特性有哪些

    期待已久的由微软推出的软件开发工具Visual Studio 2017正式版马上要推出了,而Visual Studio 2017 正式版发布时间和Mac版新特性有哪些呢?让我们见证一下Visual Studio 20周年纪念的倾情推荐吧. Visual Studio 2017正式版发布时间 现在,微软正式宣布,Visual  Studio  2017正式版将于3月7日正式发布!而3月7日-3月8日将进行流式直播. Visual Studio 2017Mac版新特性有哪些 1.导航增强:Visua

  • 使用Visual Studio 2017作为Linux C++开发工具

    Visual Studio 2017 微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/ VS2017亮点很多,包括模块化安装.启动速度加快(第一次启动加快50%以上).github插件.启动页完善.增强代码提示功能,等等,更多参考:https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes. Visual

  • Visual Studio 2017安装失败的解决方法

    vs2017安装操作失败,今天VS2017更新之后...MVC5右击没有Controller出现 然后我就修复,重装...都不行并且出现 安装操作失败..提示.Net.Core.SDK安装失败 然后我又下载了个SDK...装不上去... 错误提示: 由于发生一个或多个包故障,产品未能安装列出的工作负荷和组件. 工作负荷不完整 ASP.NET 和 Web 开发 (Microsoft.VisualStudio.Workload.NetWeb,version=15.0.26323.1) 组件不完整 .

  • Visual Studio 2017 (VS 2017)离线安装包制作方法

    史上功能最强大的Visual Studio 2017版本发布,但是由于版本更新速度加快和与第三方工具包集成的原因,微软研发团队没有为这个版本提供离线下载的安装文件.如果用户处在一个与外网隔离的网络环境中,则必须首先自行创建理想安装包.下面在参考微软官方文档(Create an offline installation of Visual Studio 2017 -)的基础上, 介绍如何创建离线包. 下载安装工具 用户可以通过不同的途径从(https://www.visualstudio.com)

随机推荐