исполняемым файлом.
Если грубо то:
1) Там есть extern "C" float run(const uint32_t len, const uint32_t pow, const float* inp, float* out);
namespace impl{ ... }
2) Компилирую: c++ -g -fPIC -c series_kernel.cpp -std=c++11
3) Линкую: c++ -g -shared -o libseries.so.0.0 series_kernel.o -lc
4) Получаю много ошибок а-ля: "impl::pow_kernel<9, 8>::kern", referenced from:
impl::pow_kernel<9, 8>::operator()(unsigned int, float const*, float*) const in series_kernel.o
"impl::pow_kernel<9, 8>::next", referenced from:
impl::pow_kernel<9, 8>::operator()(unsigned int, float const*, float*) const in series_kernel.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Что с этим можно сделать?
При этом я уверен, что такие символы определены
nikitakulikov@MBP-Nikita src % nm series_kernel.o -demangle | grep 'pow_kernel<9, 8>' U impl::pow_kernel<9, 8>::kern U impl::pow_kernel<9, 8>::next 0000000000066310 T impl::pow_kernel<9, 8>::is_in_use(unsigned int) const 00000000000661d0 T impl::pow_kernel<9, 8>::operator()(unsigned int, float const*, float*) const
Обсуждают сегодня