Я столкнулся со странным поведением Visual Studio 2019 (v 16.5.4) при создании модуля python, связанного с библиотеками Intel MKL (2020 Update 1). Приветствуется любая помощь!
Чтобы воспроизвести его: создайте небольшой python модуль «Project1.pyd» с помощью VS2019 со следующими строками:
#include <pybind11/pybind11.h>
#include <mkl.h>
void test() {
const MKL_INT m(10);
double test[m*m];
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, m, m, 1., test, m, test, m, 0., test, m);
}
PYBIND11_MODULE(Project1, m) {
m.def("test", &test);
}
Этот код связан с mkl_rt. lib в качестве дополнительной зависимости библиотеки для определения cblas_dgemm. Затем я вызываю модуль с простой строкой python
if __name__ == "__main__":
import Project1 as p
, ведущей к 'Ошибка загрузки DLL: модуль не найден'
Обратите внимание, что я смог запустить тот же код с помощью VS2019 16.4.5 / Python 3.6.
Ужасно то, что ни компилятор, ни компоновщик ни на что не жалуются: я потратил три полных дня, чтобы выявить и изолировать эту проблему, поскольку она возникла в большой библиотеке C ++ / python.