Я изо всех сил пытаюсь связать статическую библиотеку, созданную с помощью CMake в другом проекте Visual C++. Я получаю неразрешенные символьные ошибки LNK2001 для всех символов в библиотеке. Забыли ссылку с библиотекой? Я действительно не думаю, что у меня есть, поскольку я указал его как абсолютный путь и проверил, что если я изменю имя, я получаю сообщение об ошибке, что он не может найти библиотеку, поэтому он определенно смотрит на нее.LNK2001 с статической библиотекой Cmake
Я использовал DUMPBIN для просмотра имен символов, и они кажутся разными по сравнению с тем, что ищет VC++, например.
(в статической библиотеке)
[email protected]@@[email protected]@Z (public: __thiscall NEWMAT::Matrix::Matrix(int,int))
(неразрешенный символ)
public: __cdecl NEWMAT::Matrix::Matrix(int,int)" ([email protected]@@[email protected]@Z)
примечание QAE против QEAA в декоре, а также библиотека имеет __thiscall тогда компилятор ищет __cdecl
Похоже, что вызывающая конвенция может быть проблемой, но почему она будет отличаться, и есть ли переключатель компилятора, чтобы сделать его последовательным?
Я прошел через свойства проекта и попытался сделать все параметры компилятора одинаковыми, но безрезультатно. К сожалению, я не эксперт VC++, поэтому, возможно, это что-то очень простое, но кто-нибудь может помочь?
Добро пожаловать в переполнение стека. Я бы рассмотрел разницу в файлах заголовков, которые вы развертываете с библиотекой, и файлы заголовков, с которыми вы строите библиотеку. – Florian