main. cpp
#include <boost/dll.hpp>
#include <iostream>
# include "abstract.h"
using namespace boost::dll;
int main(int argc, char* argv[]) {
boost::filesystem::path lib_path("/home/deven/Music/dllimport");
boost::shared_ptr<my_api_interface> plugin;
std::cout << "Loading the plugin" << std::endl;
plugin = import<my_api_interface>(
lib_path / "libctest.so.1.0",
"plugin",
load_mode::append_decorations
);
plugin->cal(10,20);
}
abstract.h
# ifndef ABSTRACT_H
# define ABSTRACT_H
class my_api_interface
{
public:
my_api_interface();
virtual void cal(int a ,int b) = 0;
~my_api_interface();
};
# endif
lib.h
# include "abstract.h"
# include <boost/dll.hpp>
# ifndef LIB_H
# define LIB_H
namespace my_name
{
class actual_api : public my_api_interface
{
public:
actual_api();
void cal(int ,int ) ;
~actual_api();
};
extern "C" BOOST_SYMBOL_EXPORT actual_api plugin;
actual_api plugin;
}
# endif
lib. cpp
# include "lib.h"
# include <iostream>
using std::endl;
using std::cout;
void my_name::actual_api:: cal(int a,int b)
{
cout << a+ b << endl;
}
получение сообщения об ошибке завершения, вызванного после создания экземпляра неопределенного символа: _ZN7my_name10actual_apiD1Ev): неправильный дескриптор файла прерван (ядро выгружено). Я создал .so в linux с использованием -fpi c и затем загрузил. так что используя boost.dll. Я получаю эту ошибку FD