정적 초기화 중에 인스턴스화되는 protobuf 메시지에 문제가 있습니다. DebugPrint()와 같은 일부 함수는 충돌을 일으키고 크기가 일치하지 않는다는 오류와 함께 직렬화가 실패합니다.전체 프로토 타입 메시지
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.common#ShutdownProtobufLibrary.details을 고려하고 생성 된 mymessage.pb.cc 파일을 보면 메시지의 정적 초기화 프로그램이 아직 호출되지 않았다는 것이 문제라고 생각합니다.
메시지의 정적 이니셜 라이저가 미리 호출되는지 (또는 내가 호출 한 것인지) 어느 정도 "합법적 인"방법으로 적용 할 수 있는지 여부를 아는 사람이 있습니까? 생성 된 코드를 살펴보면 마술처럼 보이는 기능을 호출 할 수 있지만이 기능은 중단 될 수 있습니다. 아니면이 게 내가 살고 게으른 메시지를 초기화해야만하는 것입니까?
실제로 default :: instance() 호출을 stumpled하고 보았습니다. 정말로 유망한. 그러나 그것은 아무런 차이가없는 것처럼 보입니다 .-- 그리고 연결 순서는 실제로 피하고 싶습니다. – BillP
글쎄, 게으른 초기화를 사용해야 할 것입니다. 어쨌든 좋은 생각입니다. 예를 들어, protobufs를 사용할 때 Chrome에 많은 문제가 발생했기 때문에 Cap'n Proto의 동적 초기화 프로그램을 피할 수 있습니다. 싱글 톤] (http://www.object-oriented-security.org/lets-argue/singletons)을 참조하십시오. –