You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Eigen非官方NNLS类编译报错:找不到指定内部方法

Eigen NNLS编译错误:找不到internal::householder_qr_inplace_update方法

问题描述

尝试使用Eigen非官方模块中的Eigen::NNLS类编写示例程序,编译时提示该类引用的internal::householder_qr_inplace_update方法不存在。

示例代码

#include "Eigen/Core"
#include "unsupported/Eigen/NNLS"
#include <iostream>

using namespace std;
using namespace Eigen;

int main()
{
    auto matrix = Eigen::Matrix<double, 3, 3>{
        { 1.0, 2.0, 1.0 }, 
        { 2.0, -1.0, 1.0 },
        { 3.0, 4.0, 1.0 },
    };

    auto b = Eigen::Vector<double, 3>{ 1.0, 2.0, 1.0 };
    auto x = NNLS<Eigen::Matrix<double,3,3>>(matrix);   
    auto res = x.solve(b);

    std::cout << res << endl;
    return 0;
}

编译错误信息

------ Build All started: Project: testEigenUnsupportNNLS, Configuration: x64-debug ------
[1/2] Building CXX object testEigenUnsupportNNLS\CMakeFiles\testEigenUnsupportNNLS.dir\testEigenUnsupportNNLS.cpp.obj
FAILED: testEigenUnsupportNNLS/CMakeFiles/testEigenUnsupportNNLS.dir/testEigenUnsupportNNLS.cpp.obj
C:\PROGRA1\MICROS4\2022\PROFES1\VC\Tools\MSVC\14361.325\bin\Hostx64\x64\cl.exe /nologo /TP -IC:\DEV\git\cdi\testEigenUnsupportNNLS......\3rdParty\eigen\eigen-3.4.0 -IC:\DEV\git\cdi\testEigenUnsupportNNLS......\3rdParty\eigen\eigen-3.4.0\unsupported /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Ob0 /Od /RTC1 -std:c++20 -ZI /showIncludes /FotestEigenUnsupportNNLS\CMakeFiles\testEigenUnsupportNNLS.dir\testEigenUnsupportNNLS.cpp.obj /FdtestEigenUnsupportNNLS\CMakeFiles\testEigenUnsupportNNLS.dir\ /FS -c C:\DEV\git\cdi\testEigenUnsupportNNLS\testEigenUnsupportNNLS\testEigenUnsupportNNLS.cpp
C:\DEV\3rdParty\eigen\eigen-3.4.0\unsupported\Eigen\NNLS(345): error C2039: 'householder_qr_inplace_update': is not a member of 'Eigen::internal'
C:\DEV\3rdParty\eigen\eigen-3.4.0\Eigen\src\QR\CompleteOrthogonalDecomposition.h(593): note: see declaration of 'Eigen::internal'
C:\DEV\3rdParty\eigen\eigen-3.4.0\unsupported\Eigen\NNLS(357): error C2039: 'householder_qr_inplace_update': is not a member of 'Eigen::internal'
C:\DEV\3rdParty\eigen\eigen-3.4.0\Eigen\src\QR\CompleteOrthogonalDecomposition.h(593): note: see declaration of 'Eigen::internal'
ninja: build stopped: subcommand failed.

Build All failed.

问题根源

NNLS类于2022年3月新增至Eigen非官方模块,当前使用的Eigen 3.4.0版本发布于2021年7月,版本过旧,不包含internal::householder_qr_inplace_update方法以及NNLS类的完整实现。


内容的提问来源于stack exchange,提问作者user2147873

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:13:30