библиотека, в ней одна функция.
// liba.cc
export module liba;
namespace space {
export int sum(int a, int b) { return a + b; }
}
Сборка
clang++ -std=c++20 -fmodules-ts -fprebuilt-module-path=. --precompile -x c++-module -fimplicit-modules -fimplicit-module-maps -fPIC liba.cc
clang++ -c liba.pcm -o liba.o
clang++ -shared -Wl,-soname,libsum.so -o libsum.so liba.o
На 13-ой версии
$ nm -D libsum.so | grep sum
00000000000010f0 T _ZN5space3sumEii
На 15
$ nm -D libsum.so | grep sum
00000000000010f0 T _ZN5spaceW4liba3sumEii
Вопрос такой, с чего вдруг имя модуля между оказалось? Можете, пожалуйста, пояснить. Просто линкер ld не видит, lld тоже. Соответственно вызвать функцию не могу.
Ну собирай все одним компилятором) зачем разные использовать?
всё одним, в рамках одного компа, на ноуте просто 15-ый clang, вот и не собирается один и тот же проект
Ну у тебя где-то нарушается abi
ооо, спасибо видел этот пакет, может не поставил, посмотрю сейчас
да оно, там 13, спасибо
Это @h4cktill спасибо
Да, спасибо, оно
Обсуждают сегодня