экспорт методов из класса с++

программирование qt с++

есть класс Foo с методом Bar, в исполняемом файле передаётся указатель на класс Foo в подключаемую библиотеку, в библиотеке же вызывается метод Bar через переданный указатель, но при вызове вылетает symbol lookup error: <путь к библиотеке>: undefined symbol: _ZN10Foo9BarEv. что делать?

Примечание:
//execute file
//foo.h
class Foo{
public:
Foo();
~Foo();
void Bar();
};
foo.cpp
Foo::Foo(){
///импорт библиотеки и резолвинг метода Foo2
Foo2(this);
}
Foo::Bar(){
//nothing
}

//dynamic library
//main.cpp
#import "foo.h"
extern "C" Q_DECL_IMPORT void Foo2(Foo *foo){
foo->Bar();
}

Примечание:
* void Foo::Bar(){
//nothing
}

//не дописал тут, вопрос в силе
Ответы:
даешь код! =D
void Foo::Bar(){
  //nothing
}
А библиотека тоже чистый С++? Может так быть, что библиотека, даже будучи написанной на С++, имеет C-style декларацию функций. Это достигается путем добавления extern "C", частый прием для совместимости с С-кодом. В таком случае манглинг имен методов не производится, и ваше манглиное имя не находится в библиотеке.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.