Ошибка при выполнении созданного .so файла из boostdll с драйвером snmp ++ - PullRequest
0 голосов
/ 29 февраля 2020
# include "Task.h"
#include <boost/config.hpp> 
# include <iostream>
# include <string>
# include <snmp_pp/snmp_pp.h>
using namespace std ;
using Snmp_pp::Snmp;
using Snmp_pp::IpAddress;

namespace temp {
class my_plugin_sum: public my_plugin_api
{
    private:

    public:

    my_plugin_sum()
   {
        cout <<"initiated "<< endl;




    }

    void initialize()
    {
        int  status;
        Snmp snmp(status);
    }

    void execute()
    {


        cout << "Hello" << endl;

    }
};

extern "C" BOOST_SYMBOL_EXPORT my_plugin_sum plugin;

my_plugin_sum plugin;


}

Task.h

#include <string>

class my_plugin_api {
public:

   virtual void execute() = 0;

virtual  void initialize() = 0;
   virtual ~my_plugin_api() {};

};

main. cpp

# include "Task.h"
# include <boost/dll.hpp>
using namespace boost::dll;
using namespace std; 

int main()
{
    boost::filesystem::path my_path("/home/deven/Desktop/run_time/build");

    boost::shared_ptr<my_plugin_api> my_plugin ; 

    my_plugin = import<my_plugin_api>(          // type of imported symbol is located between `<` and `>`
        my_path / "libmy_lib.so",                     // path to the library and library name
        "plugin",                                       // name of the symbol to import
        load_mode::append_decorations              // makes `libmy_plugin_sum.so` or `my_plugin_sum.dll` from `my_plugin_sum`
    );

}

Я не могу инициализировать (snmp) объект внутри (snmp. cpp) конструктор файлов, потому что, когда я пытаюсь получить доступ к .so, используя boost dll, я получаю ошибку. Но когда я разделяю инициализацию и вызываю инициализацию, я получаю ошибку, указанную ниже

. / Main: ошибка поиска символа: /home/deven/Desktop/run_time/build/libmy_lib.so: undefined символ: _ZN7Snmp_pp4SnmpC1ERitb

Почему эта ошибка с символом не может быть понята

...