Ask Your Question

candronikos's profile - activity

2019-05-14 23:53:05 -0500 received badge  Student (source)
2013-12-13 07:34:44 -0500 received badge  Famous Question (source)
2013-07-17 13:34:04 -0500 received badge  Notable Question (source)
2013-07-07 21:30:05 -0500 received badge  Popular Question (source)
2013-07-07 19:50:28 -0500 answered a question Load plugin from separate package

Ok I fixed it myself. What I did was:

  1. Compile the base class into a library (Done is CMakeLists.txt)
  2. Export that library from the base class manifest (Done in manifest.xml in Fuerte)
  3. Depend on the base class package from the plugin packages manifest
  4. Plugin can be declared in a source file within the package where the plugin resides
  5. Export the plugin library (Done in the plugin package manifest.xml)

My only problem was confusing all the names it works now.

2013-07-04 18:07:43 -0500 received badge  Editor (source)
2013-07-04 17:52:55 -0500 received badge  Supporter (source)
2013-07-04 17:52:47 -0500 commented answer Load plugin from separate package

Seemed to be the case. The the tag in the export section in the manifest.xml has to be the name of the package where the base class resides. I made it the name of the package that the plugin resides. Now I'm getting another runtime error. Details above.

2013-07-04 15:13:29 -0500 commented question Cross-package PluginLib Library Loading Error

To get this to work, what are the main differences between what you did and the tutorial? The main thing I would like to know is in which package did you declare you're plugin and if you had to turn your base class into a shared library for Package B to link with its plugin.

2013-07-04 13:08:44 -0500 asked a question Load plugin from separate package

Is it possible to load a plugin developed in a separate package without declaring it in the package where the base class resides? Would it be enough to declare the plugin in the .cpp file where the actual plugin lives?

When I tried this, I got the error:

[ERROR] [1372978694.271503470]: The plugin failed to load for some reason. Error: According to the loaded plugin descriptions the class amigctrl_plugin/AmigoBot with base class type cruise_plugin_base::PBase does not exist. Declared types are  cruise_core/amigo_locomotion_plugin

So the plugin that I developed isn't listed here. Just the one that exists in the original package. Can plugins only be declared in the package where they are to be loaded? Is there a way around this?


EDIT: Fixed one error, another came up to go. First, for reference:

  <export>
    <pkg_name plugin="${prefix}/plugin.xml" />
  </export>

The tag "pkg_name" must be the name of the package where the base class resides. I named it the package name of the actual plugin.


Now we have a new runtime error, saying:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid
Aborted (core dumped)

Any advice on this would be appreciated.