[DDS Python API]: Failed to load rtilbedisc library from LBED Plugin config

4 posts / 0 new
Last post
Offline
Last seen: 1 year 4 months ago
Joined: 11/23/2021
Posts: 32
[DDS Python API]: Failed to load rtilbedisc library from LBED Plugin config

Helllo @all,

I am currently trying to setup a hello world dpse publisher application in python for communicating with a micro c dpse subscriber application.
I have inserted the Plugin configuration into the USER_QOS_PROFILE.xml and it looks like this:

  ....
....
<property>
   <value>
      <element>
         <name>dds.discovery.endpoint.lbediscovery.library</name>
         <value>rtilbedisc</value>
      </element>
      <element>
         <name>dds.discovery.endpoint.lbediscovery.create_function</name>
         <value>DDS_LBEDiscoveryPlugin_create</value>
      </element>
      <element>
         <name>dds.discovery.endpoint.lbediscovery.config_file</name>
         <value>LBEDiscoveryPluginExampleSubscriber.xml</value>
      </element>
      <element>
         <name>dds.discovery.endpoint.load_plugins</name>
         <value>dds.discovery.endpoint.lbediscovery</value>
      </element>
      <element>
                        <name>dds.discovery.endpoint.lbediscovery.verbosity</name>
                        <value>0</value>
      </element>
   </value>
</property>
...
..

Unfortunately when I try to execute the publisher application I get the following error:

rti.connextdds.Error:
 [D0000|ENABLE] RTIOsapiLibrary_open:!open library=rtilbedisc.dll
  [D0000|ENABLE] DDS_DomainParticipantConfigurator_load_endpoint_discovery_plugins:!failed to load library
   [D0000|ENABLE] DDS_DomainParticipantConfigurator_enable:!load endpoint-discovery plugins
    [D0000|ENABLE] DDS_DomainParticipant_enableI:!enable transport configurator
enable entity

The file "rtilbedisc.dll" is stored in the following path:

C:\Program Files\rti_connext_dds-6.1.0\resource\app\lib\x64Win64VS2012\6.1.0

I also tried to add the path above to the "Path" environment variable. But no success!

Do you have any ideas? Is there any environment variable missing?

 

Regards,

Marc

Howard's picture
Offline
Last seen: 5 hours 2 min ago
Joined: 11/29/2012
Posts: 605

Not sure why the Limited Bandwith plugins are installed in the "resource\app\lib\%arch%" directory.  Normally, target libraries are stored in "lib\%arch%". 

Windows has all sorts of issues not loading DLLs even if it finds it due to missing dependencies.  Have you installed the rdist file for VS2012?  Also, are the Connext DLL used by python also for x64Win64VS2012?

Marc.Chiesa's picture
Offline
Last seen: 2 years 8 months ago
Joined: 07/24/2017
Posts: 32

Hi Marc,

There are a couple of options I think.

  • You can use the limited bandwidth target libraries for the same platform string used to build the Python API (e.g. x64Win64VS2017) and copy the dll into the rti directory under the Python site packages.
    • Note that you could have also specified the target lib dll as a plugin option at configuration time before building the API
    • Using the host libraries based on x64Win64VS2012 would require copying all additional dependencies for that version, so I would not recommend using those with the copy method
  • You can either use the target or host libraries (though target would be recommended) and put them on the Windows path. I would double check the path you have specified, as I believe in my installation the lbed host library was under C:\Program Files\rti_connext_dds-6.1.0\resource\app\lib\x64Win64VS2012 and not a deeper directory as indicated in the original post.

Regards,

Marc

Offline
Last seen: 1 year 4 months ago
Joined: 11/23/2021
Posts: 32

Hello together,

thanks for the reply! I think i fixed the issue by rebuilding the Python API and specifing the rtilbedisc.dll as a plugin option before builing the Python API.
Now I get the following errors:

    participant = dds.DomainParticipant(domain_id, participant_qos)
rti.connextdds.Error:
 [0x010189A1,0x3D7817B6,0x77982BD3:0x000001C1{N=publisher,D=0}|ENABLE] DDS_DomainParticipantConfigurator_load_endpoint_discovery_plugins:!create custom discovery plugin
  [0x010189A1,0x3D7817B6,0x77982BD3:0x000001C1{N=publisher,D=0}|ENABLE] DDS_DomainParticipantConfigurator_enable:!load endpoint-discovery plugins
   [0x010189A1,0x3D7817B6,0x77982BD3:0x000001C1{N=publisher,D=0}|ENABLE] DDS_DomainParticipant_enableI:!enable transport configurator
enable entity

any ideas?

Regards,

Marc