![为什么从 Netbeans 启动的 c++ 应用程序使用 Netbeans 安装目录?](https://linux22.com/image/1197645/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BB%8E%20Netbeans%20%E5%90%AF%E5%8A%A8%E7%9A%84%20c%2B%2B%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BD%BF%E7%94%A8%20Netbeans%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
当我运行一个使用库的简单应用程序(在本例中为 Ogre3D,来自 NetBeans)时,它会中断并显示以下消息:
Error occurred during execution: InternalErrorException:
Could not load dynamic library /snap/netbeans/84/usr/local/lib/OGRE/RenderSystem_GL.
System Error: /snap/netbeans/84/usr/local/lib/OGRE/RenderSystem_GL.so.14.1:
cannot open shared object file:
No such file or directory in DynLib::load at
/home/fedor/projecten/c++/ogre-14.1.0/OgreMain/src/OgreDynLib.cpp (line 136)
该应用程序找不到它所需的库,它似乎正在将我给它的搜索路径(usr/local/lib/OGRE)附加到 NetBeans 的安装路径(/snap/netbeans/84)。
当我在没有 NetBeans 的情况下启动同一个应用程序时,只需单击它,它就可以正常运行。
当从 NetBeans 启动应用程序时,如何让应用程序使用正确的工作目录并在适当的位置搜索库?
(使用 Ubuntu 22.04LTS、NetBeans 19 和 g++ 版本 11.4.0)
答案1
事实证明问题出在 Snap 上。我删除了 Netbeans snap 安装并下载了二进制包。这完全没有出现任何问题。