Я пишу свою собственную библиотеку, которая реализует интерфейс Engine3D (сделано мной).
«Пользователь» этой библиотеки должен включить ее (и заголовок для интерфейса Engine3D) в свой проект и запустить его без каких-либо дополнительных библиотек и т. Д.
К сожалению, когда я делаю статическую библиотеку из своего проекта, «пользователь» должен включать в себя и мою библиотеку, и библиотеки DirectX, устанавливать каталоги для DirectX и т. Д.
Есть ли способ сделать это простым (только одна библиотека — все, что ему нужно) и прозрачный для пользователя (никаких библиотек DirectX, каталогов в проекте, все внутри моя собственная библиотека)?
Я использую Visual C ++ 2012. Я не хочу создавать динамическую библиотеку, но статическую.
Огромное совпадение, потому что у меня была та же самая проблема час назад, и я нашел очень простое решение. Если вы используете директивы комментариев #pragma для включения ваших библиотек Directx, вы просто должны предоставить им полный путь ваших библиотек (вместо только имени), например:
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/dxgi.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3d11.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3dx11.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3dx10.lib" )
Очевидно, что путь в моем примере связан с моей личной конфигурацией, и вы должны определить правильный путь к вашей директории DirectX libs на вашем компьютере. Затем вам просто нужно зайти в конфигурацию вашего проекта -> C / C ++ -> General -> Additionnal Include Каталоги и указать путь к вашим DirectX файлам включения.
Это оно! Теперь вы можете скомпилировать интерфейс DirectX и связать его с другим проектом без необходимости дополнительной настройки после этого.
Я надеюсь, что это поможет вам, и извините за мой плохой английский. 🙂
Других решений пока нет …