Использование boost lib внутри общего объекта в Eclipse — неопределенная ссылка

Я пытаюсь создать общий объект (myLib.so) для проекта, который я делаю. и я создал отдельный «проект» затмения, чтобы попытаться использовать / протестировать общий объект — они находятся в одной рабочей области.

Когда я компилирую проект для общего объекта (который использует поток библиотек наддува и т. Д.), Все компилирует файл, и я не получаю ошибок.

Когда я компилирую тестовую программу и пытаюсь связать ее с myLib.so, я получаю следующие ошибки:

/path/lib.so: undefined reference to `boost::thread::interrupt()'
/path/lib.so: undefined reference to `vtable for boost::detail::thread_data_base'
/path/lib.so: undefined reference to     `boost::detail::thread_data_base::~thread    _data_base()'
/path/lib.so: undefined reference to `typeinfo for boost::detail::thread_data_base'
/path/lib.so: undefined reference to `boost::thread::start_thread()'
/path/lib.so: undefined reference to `boost::this_thread::sleep(boost::posix_time::ptime const&)'

Я не уверен, что я неправильно компилирую myLib.so или у меня неверные настройки для тестового проекта. Как я уже сказал, когда я компилирую myLib.so отдельно, кажется, что все работает нормально, но когда я компилирую тестовую программу (которая по какой-то причине перекомпилирует myLib.so), она, похоже, идет не так.

У меня есть исходный код myLib.so, включенный в компилятор для тестового проекта, и я включил myLib.so в библиотеки компоновщика для тестового проекта.

Если бы кто-то мог оказать некоторую помощь, это было бы очень ценно. Нужна дополнительная информация, пожалуйста, спросите.

Спасибо,

Дополнительная информация:

Сделать файл для lib.so

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include *several-different-files*.mk mostly blank, LIB is blank

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: libmyLIB.so

# Tool invocations
libmyLIB.so: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C++ Linker'
g++ -shared -o "libmyLIB.so" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '

# Other Targets
clean:
-$(RM)       $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(LIBRARIES)$(CPP_DEPS)$(CXX_DEPS)$(C_UPPER_DEPS) libPS.so
-@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

Makefile для настройки теста

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include src/subdir.mk
-include subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: TestingmyLIB

# Tool invocations
TestingmyLIB: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: Cross G++ Linker'
g++ -L"/PATH" -o TestingLIB$(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '

# Other Targets
clean:
-$(RM)         $(C++_DEPS)$(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS)     TestingLIB
-@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

Также один из mk-файлов, make-файл для ссылок настройки теста (objects.mk) содержит LIBS: = -lmyLIB

0

Решение

Такого рода сообщения об ошибках (относящиеся к vtable) часто возникают, когда вы компилируете проект с помощью нереализованных виртуальных методов.

Попробуйте найти все виртуальные методы и посмотреть, есть ли для каждого подкласса реализация.

Ты можешь видеть эта ссылка что аналогичный вопрос, который был решен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]