Я знаю, что эту ошибку много раз исправляли, но до сих пор я не мог решить ее для своего проекта. Я делаю приложение Qt и хочу скомпилировать его с помощью компилятора MSVC вместо MinGW (здесь а> является причиной).
Когда я построил программу, я получаю множество ошибок такого рода (просто отрывок):
error: LNK2019: unresolved external symbol sdot_ referenced in function "double __cdecl arma::blas::dot<double>(unsigned int,double const *,double const *)" (??$dot@N@blas@arma@@YANIPEBN0@Z)
error: LNK2019: unresolved external symbol sgemv_ referenced in function "void __cdecl arma::blas::gemv<double>(char const *,int const *,int const *,double const *,double const *,int const *,double const *,int const *,double const *,double *,int const *)" (??$gemv@N@blas@arma@@YAXPEBDPEBH1PEBN21212PEAN1@Z)
и это предупреждение: LNK4272: library machine type 'x86' conflicts with target machine type 'x64'
.
Этот поток предлагает запустить qmake и пересобрал проект, но это ничего не изменило.
Из здесь и здесь и, как следует из предупреждения, я решил, что должен изменить цель машина для компоновщика. Однако все, что я нашел, объяснило это в Visual Studio. Как мне это сделать в Qt Creator?
Буду очень благодарен за любые подсказки.
EDIT: Итак, моя программа использует библиотеку броненосца, и это является причиной проблем. Когда я меняю компиляторы, мне нужно скомпилировать или слинковать эту библиотеку по-новому (верно?). В этом сообщении в блоге проблема в 2-х пунктах (второй пункт является причиной ошибок):
MSVC не может напрямую ссылаться на dll -> нам нужна так называемая «библиотека импорта».
Видимость символов: GCC/MinGW по умолчанию экспортирует все символы, MSVC по умолчанию не экспортирует символы.
Поэтому при использовании MSVC мне нужно связать библиотеку импорта (.lib) вместо .dll в случае MinGW. Как я могу сделать это в QtCreator?
Это мой первый опыт работы с компиляторами и компоновщиками, поэтому я открыт для исправлений, предложений и решений!