Если DLL будет использоваться только текущим решением, метод «Добавить ссылку» в порядке, выходные каталоги всех проектов уже должны быть одинаковыми (вероятно, $ (SolutionDir) \ $ (Platform) \ $ (Конфигурация)), хотя промежуточные каталоги будут отличаться (вероятно, $ (Платформа) \ $ (Конфигурация)), поэтому копирование не потребуется. Метод «Добавить ссылку» заставляет зависимый проект вводить .lib без дополнительной работы с вашей стороны.
Если DLL будет использоваться в нескольких решениях, я предлагаю изменить стандарт __declspe * 1010 Блок * (dllexport | dllimport) для включения директивы #pragma comment (lib, ...):
#if defined(MYLIB_EXPORTS)
#define MYLIB_API __declspec(dllexport)
#else
#define MYLIB_API __declspec(dllimport)
#pragma comment(lib, '"mylib.lib")
#endif
Таким образом, простое включение заголовка библиотеки приведет к тому, что компоновщик внесет необходимый файл .lib. У меня есть структура каталогов, подобная следующей:
<root>
\projects
\projects\shared
\projects\shared\bin
\projects\shared\bin64
\projects\shared\include
\projects\shared\lib
\projects\shared\lib64
и сценарии, которые я запускаю под WSL, который принимает выходные данные VS и копирует файлы в соответствующие каталоги. Таким образом, любые проекты, которые я создаю и которые предназначены для будущего использования, не требуют, чтобы я добавлял пути к проектам c к путям поиска компилятора, мне просто нужно изменить глобальные таблицы свойств, чтобы в нужный момент заглянуть в \ project \ shared (и окружение windows включает \ project \ shared \ bin64; \ project \ shared \ bin)