使用torch编写的C++程序编译成功,但无法在运行时加载libtorch.so

我正在使用将torch集成到代码中并在内部运行lua脚本的C++代码。我已经编译并安装了torch,torch运行成功。因此,C++项目编译并生成可执行文件,没有错误。

在运行时,代码将lua脚本名称作为参数接收,并尝试执行此脚本。仅此lua脚本通过torch运行,即th script.lua运行并没有显示错误。但是在代码中,我收到一个运行时错误:/home/jeffrey/torch/install/share/lua/5.1/torch/init.lua:13: 无法加载'/home/jeffrey/torch/install/lib/lua/5.1/libtorch.so'。

我尝试从目录中删除libtorch.so,然后我会收到一个未找到库的错误,因此问题在于它无法加载,我不确定这意味着什么。我尝试以超级用户的身份给我的torch安装中的所有库提供额外的权限-这没有起作用。

我正在按以下方式运行可执行文件:

../../train_obj -oscript train_obj.lua

其中train_obj是可执行文件,train_obj.lua是将要运行的脚本。在脚本中,有要包括来自torch的模块的require语句。当调用“require”时,会触发init.lua。

在init.lua的12和13行上,出现以下require语句:

(第12行) require“paths”

(第13行)path.require“libtorch”

第13行显然尝试加载libtorch库,即libtorch.so。 在此行中,在运行时,发生上述错误。

我很难解决如何使这个库在运行时加载的问题。再次强调-如果我直接使用th语句通过torch,并调用以下任何一种: th train_obj.lua 或: th init.lua 一切都很好-两者都没有错误。 只有当我通过代码运行train_obj.lua,这将导致运行init.lua时,我才会遇到加载库的错误。 如果有人遇到了这个问题并了解需要加载库的内容,我将感激您提供帮助。

点赞