将静态库链接到 Visual C++ 中的新项目

史蒂文·吉利斯

我刚刚开始学习 C++ 并使用 Visual Studio 2017 作为 IDE。我想尽可能远离 CLR,甚至 Windows 特定代码。每个新项目选项似乎都说“Windows”,因此建议 Windows 操作系统依赖项,除了 General > Empty Project,这是我选择的选项。

我正在尝试编写一个带有一些函数的静态库。这是我正在尝试做的一个简单示例。

//Lib1.h (Project A)
#pragma once
#ifndef LIB_H
namespace Lib1
{
    double Add(double, double);
}

//Lib1.cpp (Project A)
#include "Lib1.h"
namespace Lib1
{
    double Add(double a, double b)
    {
        return a + b;
    }
}

//Main.cpp (Project B)
#include "Lib1.h"

using namespace Lib1;

int main()
{
    double c = Add(1, 2);
}

项目 A 编译时没有警告/错误。我将项目属性 > 常规 > 配置类型更改为静态库 (.lib),但我实际上无法在项目目录中找到已编译的 .lib 文件,只是一个 .obj 文件。

当我尝试构建项目 B 时,它会抛出以下错误消息。

函数 _main FrameTransformationTests S:\Projects\Cpp\Code\FrameTransformations\FrameTransformationTests\Main.obj 中引用的“LNK2019 未解析的外部符号“double __cdecl FrameTransformations::Add(double,double)”(?Add@FrameTransformations@@YANNN@Z) 1"

我看了一下,似乎项目 B 无法从项目 A 中找到 Add 函数,尽管我通过 Intellisense 获得了函数和参数的自动完成(这只是因为它可以找到 Lib1.h 文件吗? ?)。

我已经尝试在项目 B 属性 > C/C++ > 常规 > 附加 #using 目录中添加项目 A 文件夹的路径(同时添加到项目文件夹和调试文件夹中,我希望在其中生成 Lib1.lib 文件),但这没有用。

有人可以指出我做错了什么,这让我难倒了几个小时。

谢谢你。

利蒂

当您#include创建 .h 文件时,您通常只是在代码中包含声明(例外情况适用,但在这种情况下除外)。这些与放置在 .cpp 文件中的定义是分开的

默认情况下,您的项目不会自动相互共享任何此类信息。例如,来自项目 A 的定义或声明不会神奇地传播到项目 B。

但是正如您在此处所做的那样,您可以通过#includeing 头文件将项目 A 中的声明引用到项目 B 中然而,这些只是声明!他们只是解释了一个函数的存在,但没有实现它——您需要将Add函数的定义添加到项目 B 中。

将这些定义结合在一起的过程称为链接。您需要将项目 A(更准确地说是 .lib)的定义链接到项目 B。您执行此操作的方式随 Visual Studio 的每个版本略有不同,但通常在一些“链接器选项”和一些“依赖项”下选项卡/窗口。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Visual D链接到静态库中的包

来自分类Dev

将SFML静态库链接到项目

来自分类Dev

如何将项目链接到同一个 C 静态库的两个不同版本?

来自分类Dev

Visual Studio:项目参考与链接静态库

来自分类Dev

将C编译的静态库链接到C ++程序

来自分类Dev

如何将C ++静态库链接到C程序?

来自分类Dev

是否可以将macfuse链接到C ++静态库?

来自分类Dev

在Visual Studio中静态链接ffmpeg库

来自分类Dev

与 C 中的静态库链接

来自分类Dev

Visual c ++ 2010 Express不会调试新项目

来自分类Dev

如何将Oracle数据库连接到Visual Studio C#项目

来自分类Dev

将共享库链接到其他共享库C ++项目

来自分类Dev

可能的GCC错误:将库链接到项目时,缩短了长参数。C \ C ++

来自分类Dev

将Xamarin iOS UI项目链接到Visual Studio项目

来自分类Dev

如何更改静态链接库中的const字符串数组的Visual Studio C ++初始化序列

来自分类Dev

链接到Xcode中的库-静态或动态

来自分类Dev

如何在Visual C ++中的项目之间共享代码或静态库中的静态变量的“未解析的外部符号”

来自分类Dev

在Visual Studio 2019中,新项目中的调试按钮被涂黑

来自分类Dev

无法在Visual Studio 2015中创建新项目

来自分类Dev

Visual Studio 2017 中的新项目中缺少位置

来自分类Dev

无法将外部git CMake项目的输出(静态库)链接到CMake项目

来自分类Dev

将C ++库与Haskell库静态链接

来自分类Dev

在Visual Studio 2015中将SQL连接到C ++项目

来自分类Dev

尝试在Visual Studio 2013中引用静态库项目时出现链接器错误

来自分类Dev

C ++。将.dll文件链接到项目

来自分类Dev

Linux上的C ++,确认库中的代码未静态链接到生成的可执行文件中

来自分类Dev

创建并链接静态锈库并链接到c

来自分类Dev

将静态本机库链接到托管C ++项目会拉扯未使用的(和意外的)依赖项。

来自分类Dev

将Visual C ++连接到在线数据库

Related 相关文章

  1. 1

    如何使用Visual D链接到静态库中的包

  2. 2

    将SFML静态库链接到项目

  3. 3

    如何将项目链接到同一个 C 静态库的两个不同版本?

  4. 4

    Visual Studio:项目参考与链接静态库

  5. 5

    将C编译的静态库链接到C ++程序

  6. 6

    如何将C ++静态库链接到C程序?

  7. 7

    是否可以将macfuse链接到C ++静态库?

  8. 8

    在Visual Studio中静态链接ffmpeg库

  9. 9

    与 C 中的静态库链接

  10. 10

    Visual c ++ 2010 Express不会调试新项目

  11. 11

    如何将Oracle数据库连接到Visual Studio C#项目

  12. 12

    将共享库链接到其他共享库C ++项目

  13. 13

    可能的GCC错误:将库链接到项目时,缩短了长参数。C \ C ++

  14. 14

    将Xamarin iOS UI项目链接到Visual Studio项目

  15. 15

    如何更改静态链接库中的const字符串数组的Visual Studio C ++初始化序列

  16. 16

    链接到Xcode中的库-静态或动态

  17. 17

    如何在Visual C ++中的项目之间共享代码或静态库中的静态变量的“未解析的外部符号”

  18. 18

    在Visual Studio 2019中,新项目中的调试按钮被涂黑

  19. 19

    无法在Visual Studio 2015中创建新项目

  20. 20

    Visual Studio 2017 中的新项目中缺少位置

  21. 21

    无法将外部git CMake项目的输出(静态库)链接到CMake项目

  22. 22

    将C ++库与Haskell库静态链接

  23. 23

    在Visual Studio 2015中将SQL连接到C ++项目

  24. 24

    尝试在Visual Studio 2013中引用静态库项目时出现链接器错误

  25. 25

    C ++。将.dll文件链接到项目

  26. 26

    Linux上的C ++,确认库中的代码未静态链接到生成的可执行文件中

  27. 27

    创建并链接静态锈库并链接到c

  28. 28

    将静态本机库链接到托管C ++项目会拉扯未使用的(和意外的)依赖项。

  29. 29

    将Visual C ++连接到在线数据库

热门标签

归档