Неопределенный символ: _ZN3a13A при импорте привязок pybind11 - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать pybind11 привязок для существующего cmake проекта.Файл CMakeLists.txt выглядит как тот, что в учебнике .Проект создается без ошибок, однако при попытке импортировать модуль в ipython возникает следующая ошибка:

~/workspace/a/build/pya.cpython-35m-x86_64-linux-gnu.so: undefined symbol: _ZN3a13FooC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

Попытка решитьit : похоже, это связано с цепочкой инструментов ( эта проблема выглядит аналогично).У меня установлены gcc 6.5.0 и cmake 3.12.0 .

1 Ответ

0 голосов
/ 06 декабря 2018

Сложнее ответить, чем необходимо, сообщение об ошибке компоновщика скрыто.Используйте онлайновый деманглер , чтобы увидеть имя символа в виде открытого текста, которое компоновщик не может найти.Обязательно скопируйте / вставьте настоящий искаженный символ.

Допустимое искаженное имя, несколько напоминающее сообщение об ошибке, будет _ZN1a3FooC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.Который demangles к a::Foo::Foo(const std::string&).

Другими словами, вы объявили конструктор для класса Foo, но забыли написать его.Довольно стандартная ошибка.Подробнее об этих ошибках компоновщика в этом Q + A .

...