У меня действительно смутная проблема, но я надеюсь, что кто-то может помочь с этим. Я модифицировал проект C ++, и вчера он все еще работал, но сегодня это не так. Я почти уверен, что ничего не изменил, но чтобы быть полностью уверенным, я снова извлек проект из SVN и даже вернулся к предыдущей точке восстановления системы (поскольку это рабочий компьютер, иногда он тайно устанавливает обновления и т. Д. ). После успешной компиляции программа может запуститься, но после взаимодействия с ней я получаю эту ошибку:
Не удалось найти точку входа в процедуру? MethodName @ className @@ UAEXXZ в библиотеке динамических ссылок libName.dll.
Я искал в Интернете, но, похоже, проблемы большинства людей вызваны использованием более старой версии используемой библиотеки DLL. Я искал свой компьютер, и нет более старой версии. Если я удаляю правильную версию, приложение не запускается. Если я затем перекомпилирую проект, библиотека DLL будет создана снова, поэтому я вполне уверен, что приложение использует правильную библиотеку DLL и что ее создает компиляция. Если я введу синтаксические ошибки в метод, на который ссылается ошибка, проект откажется компилировать, поэтому я предполагаю, что это означает, что он также компилирует файлы, содержащие метод.
По сути, я ничего не знаю о библиотеках DLL, ссылках и т. Д., Поэтому я был бы очень признателен, если бы у кого-то было представление о том, почему функции, которые очень четко определены в проекте, вдруг не превращаются в DLL больше. Я знаю, что это расплывчато, и если потребуется дополнительная информация, я с удовольствием предоставлю ее. Спасибо!
Обновление: Я попробовал данные предложения, но все еще застрял. __declspec(dllexport)
явно не используется во всем проекте. Открытие DLL с помощью Dependency Walker показывает мне пустой верхний правый раздел, а в разделе под ним перечислены функции из сообщения об ошибке. Если я проверяю Undecorate C ++ Functions , это выглядит нормально, но если я не проверяю, я получаю странные знаки вопроса и @s из сообщения об ошибке, и в конце появляется разница:
?methodName@className@@UAEXXZ
?methodName@className@@UAEXH@Z
Возможно, в этом проблема, но я понятия не имею, что это значит, что могло быть причиной и что я могу с этим поделать.