我一直試圖解決這個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" ([email protected]@@2HA)
我幾乎是100%肯定我給自己定正確使用ProjB的選項。在「其他依賴項」下,我擁有「ProjA.lib」,並且在「其他庫目錄」下有我生成ProjA.lib文件的目錄的路徑。
我甚至有ProjA輸出.MAP文件,並在地圖上我發現: 0003:00004458 [email protected]@@2HA 10049458 foo.obj
所以我猜測,這意味着staticint
已經正確定義。
什麼可能會出錯?顯然,我做錯了什麼,但是我看不出什麼。我確定ProjB正在鏈接正確的.lib文件。我確定include目錄是好的。我確定靜態變量的定義是合理的。如有必要,我會提供任何其他信息。
可能[相關問題](http://stackoverflow.com/questions/2479784/exporting-static-data-in-a-dll)? – tmpearce