Как добавить DLL в консольное приложение на C++?

При попытке подключить ДЛЛ, указав все необходимые директории в свойствах, возникает ошибка: fatal error LNK1120: неразрешенных внешних элементов: 15. Сборка консольного приложения завершилась с ошибкой, несмотря на то, что сам проект ДЛЛ собирается корректно. Код основан на официальной документации Microsoft: <a href="https://learn.microsoft.com/ru-ru/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170" rel="nofollow">https://learn.microsoft.com/ru-ru/cpp/build/walkth...</a>
  • 22 октября 2024 г. 7:12
Ответы на вопрос 2
Ошибка `LNK1120: неразрешенных внешних элементов` указывает на то, что компоновщик не может найти определения для функций или переменных, которые были объявлены, но не реализованы в вашем основном проекте. Это может происходить по нескольким причинам, особенно при работе с DLL. Вот несколько шагов, которые вы можете предпринять для устранения этой ошибки:

1. **Проверьте экспортируемые функции из DLL**: Убедитесь, что функции, которые вы хотите использовать в своем консольном приложении, действительно экспортируются из вашей DLL. Используйте директиву `__declspec(dllexport)` для определения функций в DLL и `__declspec(dllimport)` для импорта этих функций в основном проекте:

```cpp
// В файле DLL
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

extern "C" MYDLL_API void MyFunction();
```

2. **Проверьте, включен ли файл заголовка**: Убедитесь, что вы правильно включили заголовочный файл, в котором объявлены функции из DLL, в ваш основной проект:

```cpp
#include "MyDLL.h"
```

3. **Проверьте, правильно ли настроены зависимости**: Убедитесь, что в свойствах вашего проекта консольного приложения:

   - В разделе `C/C++` -> `Общие` добавлены пути к заголовкам вашей DLL.
   - В разделе `Компоновщик` -> `Общие` добавлены пути к библиотекам вашей DLL.
   - В разделе `Компоновщик` -> `Ввод` добавлен файл `.lib`, сгенерированный при сборке вашей DLL (обычно он будет называться таким же, как и ваша DLL, но с расширением `.lib`).

4. **Убедитесь, что используете совместимые версии**: Если ваш проект DLL использует другую версию компилятора или настройки компиляции (например, версии C++), это также может вызвать проблемы. Убедитесь, что оба проекта (и консольное приложение, и DLL) имеют одинаковые зависимости и настройки.

5. **Проверьте наличие других ошибок компоновки**: Иногда другие ошибки могут вызывать эту проблему. Обязательно просмотрите все ошибки и предупреждения при сборке, чтобы убедиться, что ничего не было пропущено.

6. **Проверьте, что обе сборки 32-разрядные или 64-разрядные**: Если вы собираете одно приложение как 32-разрядное, а другое как 64-разрядное, это также приведет к ошибкам.

Если вы выполнили все вышеперечисленные шаги и все еще сталкиваетесь с ошибкой, предоставьте более подробную информацию о вашем проекте, и я постараюсь помочь вам более детально.
помимо самих директорий, ещё надо lib файл подключить этой библиотеки.
Похожие вопросы