Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Nsight Eclipse无法找到共享库_C++_Eclipse_Cuda_Nsight - Fatal编程技术网

C++ Nsight Eclipse无法找到共享库

C++ Nsight Eclipse无法找到共享库,c++,eclipse,cuda,nsight,C++,Eclipse,Cuda,Nsight,我正在使用nsighteclipse创建一个类库,其中包含CUDA加速类,这些类将由第三方应用程序扩展和使用。让我们称我的项目为“foo”。我想通过在一个单独的项目中编写一个第三方应用程序来测试foo,包括我的测试应用程序,并运行它。但是,当我这样做时,测试应用程序无法找到foo共享库文件 我已经将测试项目的include路径设置为我的foo的src目录,测试应用程序正在请求正确的库名称,并且foo/Debug的路径是正确的。我的流程基于中的说明 我已经验证了foo正在生成一个共享库工件,并且检

我正在使用nsighteclipse创建一个类库,其中包含CUDA加速类,这些类将由第三方应用程序扩展和使用。让我们称我的项目为“foo”。我想通过在一个单独的项目中编写一个第三方应用程序来测试foo,包括我的测试应用程序,并运行它。但是,当我这样做时,测试应用程序无法找到foo共享库文件

我已经将测试项目的include路径设置为我的foo的src目录,测试应用程序正在请求正确的库名称,并且foo/Debug的路径是正确的。我的流程基于中的说明

我已经验证了foo正在生成一个共享库工件,并且检查了-fPIC标志

我可以编译这两个项目,因此看起来设置确实正确,但是当我实际尝试运行测试项目时,我收到消息“加载共享库时出错:foo.so:无法打开共享对象文件:没有这样的文件或目录”。但是当我查看foo/Debug目录时,我可以在那里看到libfoo.so文件

我也尝试将foo更改为静态库,但这会产生相同的错误消息

发生了什么?我能做些什么来修复它


谢谢你的帮助

Linux通常不会加载用户创建的共享库,除非该库位于
LD\u library\u path
环境变量中包含的路径上

将有问题的库路径添加到
LD\u library\u path
环境变量中以解决此问题

使用bash/sh可以:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/library.so
此时,作为测试,从命令行运行程序。它现在应该可以找到图书馆了

然后你可以启动Nsight EE,它也会找到它

这没有多大意义:

我也尝试将foo更改为静态库,但这会产生相同的错误消息


静态库永远不会动态加载,即使它位于“正确”路径上。

不幸的是,更改LD_library_路径对问题没有任何影响。这可能会让操作系统知道额外的位置,但不会让操作系统知道

最终对我有效的是在项目的根目录中向共享库添加一个符号链接。i、 e.
ln-s~/path/to/foo.so foo.so
现在foo.so可直接用于我的项目,即使我以后重新编译foo也是如此


这仍然感觉有点像黑客,但至少我可以继续开发…

我试图解决同样的问题。 在我的配置中,我的项目在同一个工作区中,我试图将它们链接到一个项目中

我的解决方案是为每个项目添加引用。 这就是: 属性->路径和符号->引用选项卡

然后只需检查工作空间中您需要的项目