SuiteSparse 5.4.0 неразрешенная внешняя ошибка символа в Visual Studio во время компиляции - PullRequest
0 голосов
/ 13 июня 2019

Я установил через 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);
...