저는이 정적 변수를 지금 몇 시간 동안이 문제를 해결하려고 노력하고 있습니다. 문제이 링커 오류의 원인은 무엇입니까?
프로젝트 : 내가 여기에 비주얼 스튜디오 2010를 사용하고있어 상황의 간단한 개요입니다
//foo.h
#pragma once
class SUP
{
public:
static int staticint;
};
및
:의 proja에서-ProjA (outputs a .dll and .lib)
-ProjB (outputs a .exe)
, 나는이 두 파일이
//foo.cpp
#include "foo.h"
int SUP::staticint = 10;
ProjB는 ProjA.lib에 링크
이제 6,//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