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

泼溅

我的Visual Studio C ++解决方案中有两个项目,我想在它们之间共享一些代码。因此,我寻找了它,发现很多人建议创建静态库并将其与两个项目链接。但是,当我这样做时,所有静态变量都出现“无法解析的外部符号”错误。这里是如何重现该问题的方法:

1)使用名为Project1的空项目创建空的Visual Studio解决方案,将其类型更改为“静态库”(lib)。添加Foo类:

Foo.h:

#pragma once
class Foo
{
public:
    static int F(int a);
private:
    static int bar;
};

Foo.cpp:

#include "Foo.h"
int Foo::F(int a)
{
    bar = 3;
    return a*bar;
}

2)创建一个名为Project2的空项目。

Source.cpp:

#include <iostream>
#include "Foo.h"
int main()
{
    std::cout << Foo::F(2) << std::endl;
    std::cin.get();
    return 0;
}

3)在Project2的属性中,将Project1文件夹添加到“其他包含目录”

4)在Project2的通用属性中,单击“添加新引用”,将Project1添加为新引用。(或者您可以在Linker-> Input-> Additional Dependencies中添加Project1.lib)。

现在,仅编译静态库(Project1)时,它可以工作。当您同时编译或仅编译可执行文件(Project2)时,

2>Project1.lib(Foo.obj) : error LNK2001: unresolved external symbol "private: static int Foo::bar" (?bar@Foo@@0HA)
2>C:\dev\Project1\Debug\Project2.exe : fatal error LNK1120: 1 unresolved externals

如果删除静态变量,它将起作用。我究竟做错了什么?有什么更好的方法和简单的方法可以在项目之间共享代码(而不仅仅是在两个项目中都包含相同的.cpp / .h文件)?

船长

您已经声明了barFoo但尚未提供定义。您需要在代码中添加以下内容。

int Foo::bar;

如果您想使用特定值对其进行初始化(例如42),则可以执行

int Foo::bar = 42;

您仅收到链接器错误的原因Project1是因为静态库或Project2实际都无法访问, Foo::bar因此没有链接器可解决的引用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用JNI管理C ++代码中的静态变量?

来自分类Dev

如何使用JNI管理C ++代码中的静态变量?

来自分类Dev

如何在C中编译静态和动态变量

来自分类Dev

如何在Visual Studio中的项目之间共享C ++源代码文件?

来自分类Dev

C ++:如何访问存储在multimap静态变量中的数据

来自分类Dev

如何在C ++ 03中实现线程安全的局部静态变量?

来自分类Dev

C中的静态变量如何在内存中保留?

来自分类Dev

如何在C#中从父窗体访问子窗体的静态变量

来自分类Dev

Visual Studio中静态库项目之间未解决的外部问题

来自分类Dev

Makefile:如何在C中创建静态库和共享库?

来自分类Dev

如何在函数之间共享静态变量?

来自分类Dev

.lib中的C ++静态变量未初始化

来自分类Dev

.lib中的C ++静态变量未初始化

来自分类Dev

如何在 C 中的项目之间共享函数符号和地址?

来自分类Dev

Visual C#-如何在Winforms中对齐项目?

来自分类Dev

如何在Visual Studio 2010 Ultimate中创建C ++项目

来自分类Dev

如何在Visual Studio代码中调试从F2py接口调用共享库中的C函数的python程序

来自分类Dev

如何在Visual Studio 2005(C ++)中声明复杂变量

来自分类Dev

如何在类静态成员中引用静态变量?

来自分类Dev

如何/何时在C语言中声明函数中的静态变量?

来自分类Dev

Visual Studios C ++代码中的错误。Lab4.obj:错误LNK2019:未解析的外部符号“布尔__cdecl

来自分类Dev

如何在AOSP项目中使用预建的c ++静态/共享库

来自分类Dev

C ++中的静态类成员变量和静态变量

来自分类Dev

C ++和Java中的静态变量

来自分类Dev

成员函数中的C ++静态变量

来自分类Dev

类中的C ++静态变量

来自分类Dev

C结构中的静态变量

来自分类Dev

C ++中的隐式静态变量?

来自分类Dev

成员函数中的C ++静态变量

Related 相关文章

  1. 1

    如何使用JNI管理C ++代码中的静态变量?

  2. 2

    如何使用JNI管理C ++代码中的静态变量?

  3. 3

    如何在C中编译静态和动态变量

  4. 4

    如何在Visual Studio中的项目之间共享C ++源代码文件?

  5. 5

    C ++:如何访问存储在multimap静态变量中的数据

  6. 6

    如何在C ++ 03中实现线程安全的局部静态变量?

  7. 7

    C中的静态变量如何在内存中保留?

  8. 8

    如何在C#中从父窗体访问子窗体的静态变量

  9. 9

    Visual Studio中静态库项目之间未解决的外部问题

  10. 10

    Makefile:如何在C中创建静态库和共享库?

  11. 11

    如何在函数之间共享静态变量?

  12. 12

    .lib中的C ++静态变量未初始化

  13. 13

    .lib中的C ++静态变量未初始化

  14. 14

    如何在 C 中的项目之间共享函数符号和地址?

  15. 15

    Visual C#-如何在Winforms中对齐项目?

  16. 16

    如何在Visual Studio 2010 Ultimate中创建C ++项目

  17. 17

    如何在Visual Studio代码中调试从F2py接口调用共享库中的C函数的python程序

  18. 18

    如何在Visual Studio 2005(C ++)中声明复杂变量

  19. 19

    如何在类静态成员中引用静态变量?

  20. 20

    如何/何时在C语言中声明函数中的静态变量?

  21. 21

    Visual Studios C ++代码中的错误。Lab4.obj:错误LNK2019:未解析的外部符号“布尔__cdecl

  22. 22

    如何在AOSP项目中使用预建的c ++静态/共享库

  23. 23

    C ++中的静态类成员变量和静态变量

  24. 24

    C ++和Java中的静态变量

  25. 25

    成员函数中的C ++静态变量

  26. 26

    类中的C ++静态变量

  27. 27

    C结构中的静态变量

  28. 28

    C ++中的隐式静态变量?

  29. 29

    成员函数中的C ++静态变量

热门标签

归档