具有Qt5执行错误创建的OpenSplice失败:句柄无效

时间:2017-03-03 09:30:12

标签: c++ qt5 handle data-distribution-service opensplice

我尝试使用Qt5运行OpenSplice的教程示例。我成功构建了程序,但是当我运行它时,我收到以下错误:

  

DDS :: DomainParticipantFactory :: create_participant:创建错误   失败:句柄无效

经过多次调试后,我得出的结论是我的可执行文件没有链接到我的ospl!我想出来因为当它崩溃时没有生成ospl-error.log。

我正确地发布了发布文件. ./release.com并从同一终端启动了我的qtcreator,因此所有环境变量都已正确设置(尤其是OSPL_URIOSPL_HOME

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我终于设法解决了这个问题并想到了分享答案。 问题是我在我的.pro中包含了所有DDS库我包括以下库:

unix:!macx: LIBS += -L$$PWD/../../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/lib/ -lcmagent -lcmjni -lcmsoap -lcmxml -ldbmsconnect -ldcpsc99 -ldcpsccpp -ldcpsgapi -ldcpsisocpp -ldcpsisocpp2 -ldcpssac -ldcpssacpp -ldcpssaj -lddsconf -lddsconfparser -lddsdatabase -lddshts -lddsi2 -lddsi2e -lddskernel -lddsos -lddsosnet -lddsrmi -lddsrrstorage -lddsserialization -lddsuser -lddsutil -ldurability -lfacecpp -lleveldb-ospl -llzf-ospl -lnetworking -lnwbridge -lrlm913 -lrnr -lsigar-amd64-linux -lsnappy-ospl -lsnetworking -lspliced -lsqlite3-ospl -lstreamsccpp -lstreamsisocpp -lstreamssacpp

INCLUDEPATH += $$PWD/../../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/include
DEPENDPATH += $$PWD/../../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/include

我现在正在使用程序所需的最小的lib集,现在它运行得很好。以下是我现在使用的内容:

unix:!macx: LIBS += -L$$PWD/../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/lib/ -lddskernel -ldcpsisocpp

INCLUDEPATH += $$PWD/../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/include
DEPENDPATH += $$PWD/../PrismTech/Vortex_v2/Device/VortexOpenSplice/6.7.1/HDE/x86_64.linux/include

实际上错误是由-ldcpsccpp和-lddshts引起的。通过删除这些库,应用程序可以正常运行。