Bad File Descriptor Boost DLL - PullRequest
       8

Bad File Descriptor Boost DLL

0 голосов
/ 26 февраля 2020

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

...