<!> 启动时出错:使用 sqlite3 时无法在 OMNET++ 项目中加载库
<!> Error during startup: Cannot load library in OMNET++ project while using sqlite3
我有一个 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 不起作用。我为它做了同样的步骤:
- 在OMNET++->Makemake->Options->Target
中标记为"create shared library"
- 在主项目
的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 库。我通过以下步骤将它添加到项目中:
- 设置Project->Properties->OMNET++->Makemake->Options->Link->Additional Libraries to link with (-l option): sqlite3
- 设置项目->属性->C/C++常规->路径和符号->库路径:C:/sqlite
由于我没有收到一些确切的信息,为什么libCB_CSW_Cloud没有加载,我不知道是什么原因造成的。我以与其他项目 CB_CSW_Vehicle 完全相同的方式使用它。这让我想到了 sqlite3 库导致问题的建议。可能吗?项目 CSW 可以引用另一个项目 CB_CSW_Cloud,它本身使用库 sqlite3?或者我是否也应该将此库添加到 CSW?
你能帮我 运行 CSW 项目吗?
更新:我通过将 sqlite3 库添加到 运行 配置并复制 CB_CSW_Cloud 的源代码解决了我的问题 和 CB_CSW_Vehicle 项目到 CSW 项目。在OMNET++中要有很多项目真的很难。
您必须将 link 添加到 CSW
项目的 运行 配置中的 sqlite3
库。转到 Run
| Run Configurations...
| Main
选项卡 | More>>
并在 Dynamic libraries
中写入 sqlite3
库的路径。请注意,路径必须是相对于工作目录的路径,并且没有 dll
后缀,没有 lib
前缀。
如果 dll
文件 sqlite3
不包含 lib
前缀,尝试重命名它(例如从 sqlite3.dll
到 libsqlite3.dll
)。
我有一个 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 不起作用。我为它做了同样的步骤:
- 在OMNET++->Makemake->Options->Target 中标记为"create shared library"
- 在主项目 的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 库。我通过以下步骤将它添加到项目中:
- 设置Project->Properties->OMNET++->Makemake->Options->Link->Additional Libraries to link with (-l option): sqlite3
- 设置项目->属性->C/C++常规->路径和符号->库路径:C:/sqlite
由于我没有收到一些确切的信息,为什么libCB_CSW_Cloud没有加载,我不知道是什么原因造成的。我以与其他项目 CB_CSW_Vehicle 完全相同的方式使用它。这让我想到了 sqlite3 库导致问题的建议。可能吗?项目 CSW 可以引用另一个项目 CB_CSW_Cloud,它本身使用库 sqlite3?或者我是否也应该将此库添加到 CSW?
你能帮我 运行 CSW 项目吗?
更新:我通过将 sqlite3 库添加到 运行 配置并复制 CB_CSW_Cloud 的源代码解决了我的问题 和 CB_CSW_Vehicle 项目到 CSW 项目。在OMNET++中要有很多项目真的很难。
您必须将 link 添加到 CSW
项目的 运行 配置中的 sqlite3
库。转到 Run
| Run Configurations...
| Main
选项卡 | More>>
并在 Dynamic libraries
中写入 sqlite3
库的路径。请注意,路径必须是相对于工作目录的路径,并且没有 dll
后缀,没有 lib
前缀。
如果 dll
文件 sqlite3
不包含 lib
前缀,尝试重命名它(例如从 sqlite3.dll
到 libsqlite3.dll
)。