Я установил через vcpkg SuiteSparse 5.4.0-1 для 64-битной Windows. При попытке скомпилировать программу SuiteSparseQR в Visual Studio (для 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);