2014-07-22 3 views
2

C++에서는 동적 라이브러리로드없이 "플러그인"을 시뮬레이션 할 수 있기를 바랍니다. 내가 그것을 참조하지 않고 내 실행 파일에 정적 라이브러리 안에 함수를 연결하는 방법을 발견했지만, 이것이 맞는지 확실하지 않습니다. 나는 그런 종류의 발생 적이 있기 때문에진입 점이없는 코드 호출

int _ = []() 
{ 
    std::cout << "hook" << std::endl; 
    return 0; 
}(); 

람다 + 인생 패턴 + safe initialisation 작품의 조합 :하지만, 전역 기호가 번역 단위 주요 기능 전에 초기화되기 때문에

, 내가 좋아하는 뭔가를 쓸 수 있습니다 기술, 정의되지 않은 동작이나 컴파일러 관련 세부 사항이 걱정됩니다. 더 좋은 점이 있습니까?

답변

0

당신이 보여주는 것은 합법적 인 C++입니다. 일반적으로 전역 변수 초기화는 main() 외부에서 코드를 실행하는 데 사용될 수 있습니다. 귀하가 제공하는 링크에서 언급 한 바와 같이 "static initialization order fiasco"이라는 경고가 있습니다.

눈살을 찌푸리기 때문에 보지 못했습니다. main() 외부에서 코드를 실행하기 위해 전역 변수를 사용하고 있습니다. 그러한 많은 시도는 좌절로 끝났습니다.