Пожалуйста, не отвечайте на вопрос "как мне решить это сообщение об ошибке?"
В сообщении об ошибке, предоставленном золотом:
/usr/bin/ld.gold: the vtable symbol may be undefined
because the class is missing its key function
Что такое key function
? Я нахожу ссылку на него на странице GCC для атрибутов функций в разделе dllimport
. Соответствующий текст гласит:
В целевом объекте SH Symbian атрибут dllimport также имеет другое влияние (sic) - он может вызывать информацию типа vtable и тип времени выполнения для экспортируемого класса. Это происходит, когда класс имеет конструктор dllimport или неединичную, нечистую виртуальную функцию, и для любого из этих двух условий класс также имеет встроенный конструктор или деструктор и имеет ключевую функцию, определенную в текущая единица перевода.
Из этого я убеждаюсь, что существует некоторая функция, отличная от конструкторов или деструкторов, требуемых при некоторых условиях, при использовании атрибута dllimport
, в Symbian OS. Интересно, но я компилирую для Linux в Linux, а grep -r dllimport
ничего не показывает. Поэтому этот параграф не применяется.
(FWIW проблема выводится (в данном случае) из деструктора undefined, но как документация, так и вывод компоновщика идут на большие усилия, чтобы отличить "ключевую функцию" от деструктора. Для других видов отсутствующих символов, компоновщик произносит имя отсутствующего символа.)
Итак, что такое key function
действительно?