【问题标题】:<!> Error during startup: Cannot load library in OMNET++ project while using sqlite3<!> 启动时出错:使用 sqlite3 时无法在 OMNET++ 项目中加载库
【发布时间】:2015-09-21 12:58:45
【问题描述】:

我有一个 OMNET++ 项目,CSW,它通过 Project->Properties->Project References 引用其他 OMNET++ 项目。

对项目 CB_CSW_Vehicle 的引用工作正常。我将此项目 Project->Properties->OMNET++->Makemake->Options->Target 标记为 shared library。所以我有一个libCB_CSW_Vehicle.dll,它被主项目CSW使用。 CSW 的模拟运行,使用 CB_CSW_Vehicle 没有问题。

对其他项目 CB_CSW_Cloud 的引用不起作用。我为它做了同样的步骤:

  1. OMNET++->Makemake->Options->Target中标记了“创建共享库”
  2. 在主项目的Properties->Project References中勾选了项目CB_CSW_Cloud

我可以构建我的主项目CSW。我还可以构建 libCB_CSW_Cloud.dll。当我从项目 CSW 运行模拟时,我收到一个错误:

<!> Error during startup: Cannot load library '../../../CB_CSW_Cloud/src//libCB_CSW_Cloud.dll': The operation completed successfully.

这两个项目的唯一区别是 CB_CSW_Cloud 使用 sqlite3 库。我通过以下步骤将其添加到项目中:

  1. 设置 Project->Properties->OMNET++->Makemake->Options->Link->Additional Libraries to link with (-l option)sqlite3
  2. 设置Project->Properties->C/C++General->Paths And Symbols->Library PathsC:/sqlite

由于我没有收到一些确切的信息,为什么 libCB_CSW_Cloud 没有加载,我不知道是什么导致了问题。我以完全相同的方式使用它,就像其他项目 CB_CSW_Vehicle 一样有效。这导致我提出建议,即 sqlite3 库会导致问题。可能吗?一个项目 CSW 是否可以引用另一个项目 CB_CSW_Cloud,它本身使用库 sqlite3?或者我也应该将此库添加到 CSW 中?

你能帮我运行 CSW 项目吗?

更新:我解决了我的问题,将 sqlite3 库添加到运行配置并将 CB_CSW_CloudCB_CSW_Vehicle 项目的源代码复制到CSW 项目。在 OMNET++ 中真的很难有很多项目。

【问题讨论】:

    标签: c++ eclipse sqlite omnet++


    【解决方案1】:

    您必须在CSW 项目的运行 配置中添加指向sqlite3 库的链接。转至Run | Run Configurations... | Main 标签 | More&gt;&gt;Dynamic libraries 写入sqlite3 库的路径。请注意,该路径必须是相对于工作目录的路径,并且没有dll 后缀,没有lib 前缀。
    如果sqlite3dll 文件不包含lib 前缀,尝试重命名它(例如从sqlite3.dlllibsqlite3.dll)。

    【讨论】:

    • 如果我将我的路径添加到${opp_shared_libs:/CBCSWSim/simulations/avspeedaggreg/path} 我收到一个错误,它不是现有的文件夹或文件。
    • 错误是:argument to ${opp_shared_libs} needs to be an existing file, folder, or project
    • 路径必须包含文件名。例如:如果你想加载库c:\sqlite3\libfoo.dll,并且你的工作目录是c:\omnetpp\CBCSWSim\simulations\avspeedaggreg,那么你应该写:../../../../sqlite3/foo,没有${opp_shared_libs:....
    • 当我试图在我的电脑上找到 libsqlite3.dll 时,我收到一个错误Cannot determine location for ../../../../../../../sqlite/sqlite3,所以我只是将它复制到我的工作目录并写了sqlite3。它不会产生错误。所以,只要我不使用来自CB_CSW_Cloud 的函数,模拟就会运行,但是当我从CB_CSW_Cloud 调用一个类的构造函数时,我有错误Simulation terminated with exit code: -1073741511。我不知道它是否仍然是sqlite3 问题或其他问题。是否有可能在 OMNETT++ 中获得有关此错误的更多信息?
    • 如果您在调试模式下编译这两个项目,您可以获得有关错误的更多信息。然后在omnetpp.ini 中设置:debug-on-errors=true 并准备调试配置(与运行配置相同)。然后开始调试。发生错误时,调试器应停止执行您的代码。并且您应该能够查看导致此错误的代码行。
    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多