vs 外部依赖项、附加依赖项以及如何添加依赖项目

我们在 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>

 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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

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

  • 2. 库目录 & 附加依赖项

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

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

    来手动指定了。你写代码读写一个文件需要写明文件名吧,这个文件名就相当于那个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步骤没有做。

                <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-d4dade9c33.css">
                    </div>
    
     
     
    • 1
    • 2
                <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                    </div>
    
### Visual Studio 中配置附加依赖项的方法 在开发过程中,为了能够成功编译并运行程序,通常需要引入外部库的支持。这些支持可以通过配置 **附加依赖项** 来实现。以下是针对 Visual Studio 的具体操作方法: #### 1. 设置附加依赖项 附加依赖项是指定项目所需的 `.lib` 文件列表。通过此设置可以告诉编译器哪些静态或导入库需要被链接。 - 右键单击解决方案资源管理器中的项目名称,选择 **属性 (Properties)**。 - 在弹出的窗口中导航至 **配置属性 -> 链接器 -> 输入**。 - 找到 **附加依赖项 (Additional Dependencies)** 字段,在其右侧点击下拉菜单并选择 **编辑 (Edit)**。 - 在打开的新窗口中输入目标 `.lib` 文件名(如 `Ws2_32.lib`),多个文件之间用分号 (`;`) 分隔[^1]。 完成上述步骤后保存更改即可生效。 #### 2. 指定头文件目录 为了让源码能正确找到对应的头文件定义,还需要指定它们的位置。 - 同样进入项目的 **属性 (Properties)** 对话框。 - 转向 **C/C++ -> 常规** 页面。 - 修改 **附加包含目录 (Additional Include Directories)** 参数,填入存放所需头文件的具体路径[^4]^。 #### 3. 定义库文件位置 除了声明要用哪个`.lib`, 还得告知链接器去哪寻找实际存在的二进制数据. - 返回到之前提到过的 **链接器(Linker)** 下面. - 查找名为 **常规->附加库目录(General-> Additional Library Directories)** 的选项卡. - 将存储对应 .lib 文件夹全地址补录于此处. 以上三步共同构成了整个流程的核心环节——即明确了什么功能模块参与进来以及怎样关联起来形成最终产物的过程描述如下: ```cpp // 示例代码展示如何加载 WinSock 库来创建简单的套接字通信应用 #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsaData; int result = WSAStartup(MAKEWORD(2, 2), &wsaData); if(result != NO_ERROR){ printf("WSAStartup failed with error %d\n",result ); return -1 ; } // 更多逻辑... } ``` 这段示范说明当无法直接利用图形界面设定时可通过预处理器指令达到相似效果[^3]. --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值