我们在 VS 中创建 Win32 控制台应用程序,vs 会为解决方案创建默认地创建 4 个 filters(资源管理器中没有对应的目录和文件夹):

  • 头文件:一般为 .h 文件
  • 外部依赖项
  • 源文件:一般为 .cpp文件
  • 资源文件

1. 外部依赖项 & 资源文件

  • 外部依赖项:C++ 外部依赖项有很多,大部分都是静态库文件,编译的时候会递归关联起来生成可执行文件,所以可执行文件才会大很多

    编译的时候: 外部依赖项都是一个填充地址 , 比如 你的代码里调用 外部依赖函数地址 Extern_funA 。

    • 预编译的时候展开头文件
    • 编译生成obj文件的时候,Extern_funA 就是一个填充地址 比如 0x00 00 00 00
    • 链接的时候基地址重定位生成对应的 Extern_funA 地址。
    • 链接的时候会根据你的工程配置想一个去查找 DLL 导出符号表,发现没有找到 Extern_funA 。那么就会出错,说无法定位外部符号。

    右键【源文件】,选择【添加 ⇒ 新建项】,比如此时我们创建,test.cpp 文件,只需 include 一个文件:


    #include <iostream>

    此时重新点开 【外部依赖项】filter,便会看到引入了相当多的库文件。

  • 资源文件:主要是你用到的一些程序代码以外的东西,比如图片之类,或者菜单、工具栏之类的。

2. 库目录 & 附加依赖项

库目录只是查找目录,类似环境变量 PATH;具体用哪一个需要指明的,如果不在附加依赖项里填上,就需要在代码里用

#pragma comment(lib, “xxx.lib”)

来手动指定了。你写代码读写一个文件需要写明文件名吧,这个文件名就相当于那个lib , 但读写这个文件可以不写全路径,就是因为有工作目录(working directory)的存在。

3. 添加依赖项目

VS2013 添加依赖项目

  • 1、新建解决方案,项目A

  • 2、为项目A添加一个依赖项目B,项目B做为静态lib被项目引用,

    项目B创建步骤如下:

    • 选择菜单”文件”->新建->项目,弹出“新建项目”对话框;

    • 左侧列表选择Visual C++,右侧列表选择win32控制台应用程序,

      对话框下面输入名称,选择位置,解决方案选择添加到解决方案,确定。

    • Win32应用程序向导,下一步,选择应用程序类型为静态库,

      添加公共头文件以用于选择MFC(根据实际情况选择,因为项目需求<nb30.h>编译需要选择MFC),完成。

  • 3、项目配置,项目A右键选择属性,选择通用属性,引用->添加新引用->选择项目B;

    引用项目B的头文件目录,步骤如下:配置属性->VC++目录->包含目录:添加项目B头文件路径..\B\Header。

其中编译的时候会出项目A引用项目B的接口无法解析,可能是3步骤没有做。

vs 外部依赖项、附加依赖项以及如何添加依赖项目的更多相关文章

  1. IDEA添加项目依赖(将Tomcat中的servlet-api.jar添加到项目中去)

    File -> project structure -> Modules -> 右侧Dependencies -> 然后点加号把配置好的Tomcat的依赖包加进去

  2. [转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。

    使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://re ...

  3. [整理]VS2010中如何添加“依赖","库目录","包含目录"

    VS2010中如何添加“依赖","库目录","包含目录" 1. 添加编译所需要(依赖)的 lib 文件[解决方案资源管理器]“项目->属性-&g ...

  4. 通俗的讲,就是高层模块定义接口,低层模块负责实现。 Bob Martins对DIP的定义: 高层模块不应依赖于低层模块,两者应该依赖于抽象。 抽象不不应该依赖于实现,实现应该依赖于抽象。

    通俗的讲,就是高层模块定义接口,低层模块负责实现. Bob Martins对DIP的定义: 高层模块不应依赖于低层模块,两者应该依赖于抽象. 抽象不不应该依赖于实现,实现应该依赖于抽象. 总结出使用D ...

  5. 依赖注入及AOP简述(一)——“依赖”的概念 .

    一.入门:依赖注入 作为一种全新的设计模式理念,“依赖注入”这个词汇在软件设计开发中已经是越来越耳熟能详了,而各种流行于开源社区的“依赖注入框架”,也越来越多的被当作软件工程开发过程中使用的基础框架. ...

  6. 学习Android过程中遇到的问题及解决方法——AS为xutils添加依赖

    在使用xutils时遇到不能添加以来的问题,花了很长时间终于解决,网上添加依赖的方法很多,在此针对个人出现的问题作下笔记. 我本想使用jar包,因为在使用smartImageView时是用的jar包来 ...

  7. Maven项目打Jar包,如何添加依赖

    之前介绍了使用spring-boot-maven-plugin插件打jar包,会把所有的依赖文件都导入,然后变成了一个可执行的jar包.这样的不好的地方就是,我实际上并不需要把依赖的jar包也打入到生 ...

  8. m2eclipse插件——添加依赖不显示搜索结果

    使用Eclipse,安装m2eclipse插件之后,选中Maven项目的pom文件,添加依赖,点击“Add Dependency”的时候,输入要检索的jar包名称,search result却一直为空 ...

  9. 【spring cloud】spring cloud子module的pom文件添加依赖,出现unknown问题【maven】

    spring cloud项目,一般都是父项目中有多个子服务,也就是子module模块. 如下图: 问题描述:在父项目中引用了常用的jar包,例如,引入了spring boot的依赖,那么在子项目中引入 ...

随机推荐

  1. C. Arthur and Table(Codeforces Round #311 (Div. 2) 贪心)

    C. Arthur and Table time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. 欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国

    欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国 前几天开了个欧洲的VPS,当备用的,没怎么用.就这样的VPS在1天之内也收到不少来自中国网民的见面礼 用了别人的一条命令: gre ...

  3. 很好的资源 for android

    //texttospeach http://examples.javacodegeeks.com/android/core/text-to-speech/android-text-to-speech- ...

  4. echarts tooltip提示框 自定义小圆点(颜色、形状和大小等等)

    项目是拿 echarts + 百度地图 来做可视化界面,现在到收尾阶段慢慢优化. 先附代码: formatter: function(params) { var result = '' params. ...

  5. (转)Linux下使用rsync最快速删除海量文件的方法

    转自 : http://www.ha97.com/4107.html 昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用.这个时候,我 ...

  6. <link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /> <LINK href="Xubuntu.ico" rel="shortcut icon"> <link href="Xubuntu.ico" rel="B

    <link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /& ...

  7. HUSTOJ 1072 小数背包问题

    HUSTOJ 1072 小数背包问题 题目描述 有一个背包,背包容量是M(0<M≤500),有N(1<N≤1000)个物品,物品可以分割成任意大小. 要求尽可能让装入背包中的物品总价值最大 ...

  8. Elasticsearch入门系列~通过Java一系列操作Elasticsearch

    Elasticsearch索引的创建.数据的增删该查操作 上一章节已经在Linux系统上安装Elasticsearch并且可以外网访问,这节主要通过Java代码操作Elasticsearch 1.创建 ...

  9. [JWT] JWT with HS256

    The advantages of JWT over traditional session based validation is: it effectively removing all auth ...

  10. hard-negative mining 及伪代码实现

    Histogram of Oriented Gradients and Object Detection 获得 records 对于目标检测(object detection)问题,所谓的 hard- ...