我通过vcpkg SuiteSparse 5.4.0-1安装了x64位Windows。尝试使用Visual Studio编译SuiteSparseQR程序(对于64位,发布模式)时,我遇到了链接器错误
Error LNK2001 unresolved external symbol "struct cholmod_dense_struct * __cdecl SuiteSparseQR<float>(struct cholmod_sparse_struct *,struct cholmod_dense_struct *,struct cholmod_common_struct *)" (??$SuiteSparseQR@M@@YAPEAUcholmod_dense_struct@@PEAUcholmod_sparse_struct@@PEAU0@PEAUcholmod_common_struct@@@Z)
我不知道如何解决这个问题。
由于自动完成功能可以正常运行,因此包含文件似乎运行良好,并且我还包含了所有.lib文件。我不确定还有什么尝试。
代表代码:
#include <suitesparse/SuiteSparseQR.hpp>
...
cholmod_common c;
cholmod_start(&c);
cholmod_triplet* A_construct = cholmod_allocate_triplet(num_rows, rows * cols, num_vals, 0, CHOLMOD_REAL, &c);
A_construct->i = &i[0];
A_construct->j = &j[0];
A_construct->x = &v[0];
cholmod_sparse* A_s = cholmod_triplet_to_sparse(A_construct, 5, &c);
cholmod_free_triplet(&A_construct, &c);
cholmod_dense* X, * B;
B = cholmod_allocate_dense(num_rows, 1, num_rows, CHOLMOD_REAL, &c);
B->x = &asv[0];
X = SuiteSparseQR<float>(A_s, B, &c);
float* result = (float*)X->x;
... [Do things with result]
cholmod_free_sparse(&A_s, &c);
cholmod_free_dense(&X, &c);
cholmod_free_dense(&B, &c);
cholmod_finish(&c);