Я работаю над проектом с открытым исходным кодом: https://github.com/daniftodi/metalC++ ссылки неопределенной ссылки
У меня есть класс ArrayHolder определен в держатели/ArrayHolder.h и внедрен в держателях/ArrayHolder.cpp
Моего код компилируется; но в моем main.cpp; Мне необходимо:
#include "holders/ArrayHolder.cpp"
Если я этого не сделаю; Я получаю эту ошибку:
main.cpp.o:(.rodata._ZTV11ArrayHolderI8FunctionE[_ZTV11ArrayHolderI8FunctionE]+0x10): undefined reference to `ArrayHolder<Function>::put(Function*)
Я не понимаю проблему и не могу найти решение. Пожалуйста, помогите мне.
Включите файл заголовка в main.cpp и при связывании, скажите компилятор связать файл CPP – matesc
Можете ли вы пойти немного более подробно, что ваша проблема? Может быть, какой-то код CMake? Потому что «Если я не включаю ArrayHolder.cpp ... я получаю ошибку компоновщика», кажется довольно очевидным. Просто угадайте: вы строите библиотеку и забыли связать ее с 'main' с командой [' target_link_libraries() '] (https://cmake.org/cmake/help/latest/command/target_link_libraries.html)? – Florian
Вот мой файл CMakeList: https://github.com/daniftodi/metal/blob/master/CMakeLists.txt – daniftodi