다음과 같은 문제가 있습니다. My (C++ -) 프로젝트는 여러 하위 프로젝트로 구성됩니다. 각각의 파일에는 시작시 실행할 코드가 여러 개 있습니다.링커가 시작 코드를 최적화하지 못하게하는 방법은 무엇입니까?
// Foo.cpp
static TFooRegistry sFooRegistry; // does stuff in constructor.
각 하위 프로젝트에 대한 DLL을 사용하여 내 프로젝트를 구축, 모든 것이 잘 작동하고 예상대로 코드를 실행 : 내 솔루션은 지금까지처럼 초기에 각각의 코드를 호출하는 정적 변수를 사용하는 것입니다. 그러나 서브 프로젝트를 정적으로 링크 할 때 링커는 Foo.o에 외부에서 참조 된 코드가없는 것으로 판단하고이를 최적화합니다. 물론 다른 곳의 sFooRegistry에 대한 참조를 추가 할 수는 있지만 지루하고 오류가 발생하기 쉽습니다.
해결 방법은 무엇입니까 (표준을 준수합니까?)?
OK, mac/gcc 및 win/visual studio에서 무엇을 할 수 있습니까?
Doh! 친애하는 비얀 : 왜요? – Tobias
링커가 코드를 최적화하고 링크하지 않는 것은 무엇입니까? 나는 이것이 똑같은 두 가지 이름이라고 생각했다. – Tobias
C++은 생성자 개념이없는 기존 링커 (Stroustrup의 D & E 책 참조)와 함께 작동하도록 설계되었습니다. –