글쎄, 이것은 설명하기가 다소 복잡하다. 나는이 비슷한 보이는 헤더가 정적 라이브러리 컴파일 해요 : 내가 fooMember의 초기화를 가지고있는 cpp에있는rvct로 컴파일 할 때 전역 정적 멤버의 생성자가 호출되지 않는다
class Foo{
static int Goo(){
DoSomethingExciting();
return 0;
}
static int fooMember;
}
을 :
int Foo::fooMember = Foo::Goo();
에 정적 라이브러리를 연결 내가 쓰고있는 응용 프로그램, 호출해야하는 Goo 메서드가 호출되지 않습니다. 정확히 말하면 DoSomethingExciting() 메서드는 전혀 호출되지 않습니다. 나는 응용 프로그램에서 Foo 클래스를 사용합니다. 내가 선 넣을 때 : 내 응용 프로그램에서 cpp에있는
int Foo::fooMember = Foo::Goo();
을, 나는 끈적 거리는()가 호출되는 것을 볼 (물론 내가 정적 라이브러리에서 같은 줄을 제거).
내가 겪고있는 문제의 이름을 지정하는 방법이 확실하지 않습니다. 글로벌 정적 멤버 초기화 또는 이와 유사한 문제가있는 것 같습니다.
저는 RVCT를 사용하여 컴파일하고 있습니다. Visual Studio에서 같은 시나리오를 컴파일하면 모든 것이 잘 작동합니다. RVCT가 다르게 동작하고 일부 컴파일 플래그를 추가해야 할 수도 있습니다.
Btw, 나는 또한 컴파일 된 실행 파일에 디 컴파일러를 사용하여 시도했지만 Goo()에 대한 호출을 보지 못했습니다. 메서드가 파일에 있음을 알았지 만.
나는 ... 난 내 문제 : 사전에
덕분에 충분히 분명했다 희망