Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.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
Can';无法在@INC中找到模块,但CPAN说模块是最新的 我现在正在用C++开发一个QT小项目。_C++_Perl_Qt - Fatal编程技术网

Can';无法在@INC中找到模块,但CPAN说模块是最新的 我现在正在用C++开发一个QT小项目。

Can';无法在@INC中找到模块,但CPAN说模块是最新的 我现在正在用C++开发一个QT小项目。,c++,perl,qt,C++,Perl,Qt,我的代码正在调用Perl脚本,出现以下错误: 在@INC中找不到Proc/ProcessTable.pm 所以我去安装模块,CPAN说: Proc::ProcessTable是最新的(0.53) 所以我搜索了一下,很明显这可能是因为涉及到两个Perl副本。我试图在本地目录上获取模块,但Qt仍然无法找到它。我卡住了 此外,如果我从命令行运行Perl脚本,一切正常 有什么建议吗?使用perl-MCPAN-eshell,但将perl更改为要为其安装模块的perl的直接路径 如果这不起作用,在你失败之前

我的代码正在调用Perl脚本,出现以下错误:

在@INC中找不到Proc/ProcessTable.pm

所以我去安装模块,CPAN说:

Proc::ProcessTable是最新的(0.53)

所以我搜索了一下,很明显这可能是因为涉及到两个Perl副本。我试图在本地目录上获取模块,但Qt仍然无法找到它。我卡住了

此外,如果我从命令行运行Perl脚本,一切正常


有什么建议吗?

使用
perl-MCPAN-eshell
,但将
perl
更改为要为其安装模块的perl的直接路径

如果这不起作用,在你失败之前,试着打印出@INC(例如,
BEGIN{print“$\n”for@INC}
),然后使用
use
,并将其与
perl-e'print“$\n”for@INC
给出的结果进行比较。代码中的某些内容可能正在从@INC删除目录

或者你可以试试

force install Proc::ProcessTable

在CPAN中。

如果您知道
Proc/ProcessTable.pm
的安装路径,并且 与C++程序使用的Perl版本兼容,可以< /P>
  • 或者使用
    -I
    调用perl:

    perl-I/path/to/modules myscript.pl

    其中
    /path/to/modules
    Proc/ProcessTable.pm

    i、 e.
    /path/to/modules/Proc/ProcessTable.pm
    存在

  • 将环境变量设置为模块:

    export PERL5LIB=/path/to/modules

    然后开始你的脚本。这里给出的路径是为 内置的
    @INC
    路径

  • 使脚本使用附加路径:

    使用lib“/path/to/modules”


  • 我想要一个。或2。因为脚本中的硬编码路径几乎总是一个坏主意。

    我知道您在同一台机器上安装了两个不同的perl,对吗?你的“正则”Perl有<代码> PRO/PROSPESTRAMP。PM 已安装,而由C++调用的脚本所使用的Perl没有?有很多方法可以告诉perl在哪里搜索它的
    @INC
    lude路径。如果我是对的,我可能可以帮助您。最简单的方法是查看perl脚本shebang path中的路径。用
    -MCPAN-eshell
    运行perl并安装它。这样仍然告诉我它是最新的。@AlexisCoquard:shebang行说什么?如果将perl的路径与
    -MProc::ProcessTable-E'1'
    一起使用,会发生什么?为什么在这个系统上安装了两个perl?它们有用吗?您可以删除一个吗?尝试了第一个,现在错误消息更改为:无法加载。。找不到符号:\u PL\u curpad。我浏览了谷歌,没有发现太多:(我假设您的模块不是纯perl,但也使用了一些
    *。因此
    。试试@Sobrique的建议,这听起来很有希望。@PerlDog:相对硬编码路径很好。例如,如果您遇到符号错误,您可能指向为不同版本或体系结构的perl.U编译的Proc::ProcessTableNo幸运这没有什么明显的效果。但是如果OP是可信的,那么在HeSESO上有一些非常奇怪的是,它是不起作用的,然后我从终端和C++程序开始运行{打印} $Inc},它显示了2个不同的目录,所以我猜我应该去挖掘它。