Я загружаю DLL из приложения и хочу, чтобы DLL могла использовать функцию, реализованную в приложении. Определение функции помещено в заголовок и включено в DLL. Может кто-нибудь сказать мне, что я делаю здесь неправильно или это нельзя сделать? Спасибо за любую помощь.
App:
include <API.h>
extern "C" int Mult(int x, int y)
{
return x*y;
}
int main(int argc, char **argv)
{
if(argc <= 1)
return -1;
void * pHandle = dlopen(argv[1], RTLD_NOW);
if(pHandle == NULL)
{
cout << "Can't find DLL : " << argv[1] << endl;
cout << dlerror() << endl;
return -2;
}
else
cout << "DLL Loaded" << endl;
Файл API.h:
#ifndef __APP_API__
#define __APP_API__
extern "C" int Mult(int x, int y);
#endif
И DLL:
#include <API.h>
int Imp1::GetFunctionID()
{
return Mult(42, 42);
}
При запуске выдает ошибку:
Не могу найти DLL: ./ll.d.so
./ll.d.so: неопределенный символ: Mult
Пожалуйста, помогите. Спасибо