几个小时以来,我一直试图unresolved external symbol
在静态变量上解决这个问题,但我束手无策。我正在使用 Visual Studio 2010。这是对情况的简化概述:
有问题的项目:
-ProjA (outputs a .dll and .lib)
-ProjB (outputs a .exe)
在 ProjA 中,我有这两个文件:
//foo.h
#pragma once
class SUP
{
public:
static int staticint;
};
和
//foo.cpp
#include "foo.h"
int SUP::staticint = 10;
ProjB 链接到 ProjA.lib
//main.cpp
#include "{Full_Path}foo.h"
int main(){
std::cout << SUP::staticint << std:: endl;
}
现在,main.cpp 编译没有任何问题,但是当我尝试构建项目时,出现以下错误:
main.obj : error LNK2001: unresolved external symbol "public: static int SUP::staticint" (?staticint@SUP@@2HA)
我几乎 100% 确定我已经正确设置了 ProjB 的选项。在“其他依赖项”下,我有“ProjA.lib”,在“其他库目录”下,我有生成 ProjA.lib 文件的目录的路径。
我什至让 ProjA 输出了一个 .map 文件,在地图中我发现:
0003:00004458 ?staticint@SUP@@2HA 10049458 foo.obj
所以我猜这意味着它staticint
已经被正确定义了。
可能出了什么问题?显然,我做错了什么,但我看不到是什么。我已确保 ProjB 链接到正确的 .lib 文件。我已经确保包含目录是好的。我已经确保静态变量的定义是正确的。如有必要,我将提供任何其他信息。