Неверное название функции

У меня есть статическая библиотека, экспортирующая функцию

time_t SomeClass::getTime();

После компиляции его имя искажается как

?getTime@SomeClass@@QAE_JXZ

Когда я пытаюсь использовать его, VS возвращает ошибку

error LNK2001: unresolved external symbol "public: long __thiscall SomeClass::getTime(void)" (?getTime@SomeClass@@QAEJXZ)

И я не знаю, что не так. Почему одна и та же функция искажается по-разному? Я скомпилировал оба проекта в одной Visual Studio, класс имеет один заголовок.

Пожалуйста помоги.

1

Решение

Включили ли вы файл .lib в свойство INPUT компоновщика?
Если у вас есть два проекта в одном решении, вы можете добавить библиотеку в качестве ссылки на основной проект: щелкнуть правой кнопкой мыши в главном проекте и ссылки.

Ура,

1

Другие решения

Проблема была в разнице в time_t деклараций. Библиотека означает, что она 64-битная, но приложение ожидает 32-битное значение.

Остается вопрос: «Почему нет хорошей документации для искажения имен MSVS»? Я много читал, но не нашел подчеркивания в списке параметров.

1

Попробуйте восстановить весь проект.
Если это не работает, проверьте каталоги Visual Studio (заголовок, библиотеки)

0
По вопросам рекламы [email protected]