본문 바로가기
인터넷/모바일/머신러닝

vtable error. undefined 해결방법

by blade. 2019. 8. 7.

g++ 4 이상일 때에는  -fvisibility=hidden -fvisibility-inlines-hidden을 on하게 되어있는데, 이 옵션들을 on하면, vtable 에서 함수들을 찾을 수 없다는 에러 메시지가 나오고, link도 당연히 안 된다.

(이 옵션이 on이면 뭐가 좋긴한 것 같은데.. 잘은 모르겠음)

 

아래처럼 두 개의 옵션을 지우고, 모든 라이브러리를 재컴파일하면 문제 해결.

 

~/ACE/ACE_wrappers/include/makeinclude]vi platform_g++_common.GNU

 

1
2
3
4
5
6
7
8
9
10
11
12
13
    # Take advantage of G++ (>= 4.x) visibility attributes to generate
    # improved shared library binaries.
    ifeq ($(GXX_4_OR_BETTER), 1)
      ifneq ($(no_hidden_visibility),1)
#        CCFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
        CCFLAGS +=
        ifeq ($(gcc_template_instantiation_visibility),1)
          CCFLAGS += -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1
        endif # gcc_template_instantiation_visibility
      else
        CPPFLAGS += -DACE_HAS_CUSTOM_EXPORT_MACROS=0
      endif # no_hidden_visibility
    endif # GXX_4_OR_BETTER == 1
cs