Создание текстуры, которая находится в папке проекта - PullRequest
0 голосов
/ 16 декабря 2018

У меня проблемы с созданием текстуры, которая находится в каталоге моего проекта DLL.

Я делаю

D3DXCreateTextureFromFile(Device, "Sprites/ExpandBlack.png", &BlackTexture);

, но, похоже, это не работает.Однако, если я пройду весь путь, например:

D3DXCreateTextureFromFile(Device, "C:\\Users\\Home\\Documents\Visual Studio 2017\\Projects\\NO\\NO\\Sprites\\ExpandBlack.png", &BlackTexture);

, он сработает.

Я также попытался сделать ../Sprites/ExpandBlack.png, ..\\Sprites\\ExpandBlack.png и т. Д.

Любая помощь приветствуется.

Здесь находятся спрайты, и его нужно «скомпилировать» с помощью dll.

image

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Относительные пути относятся к текущему каталогу процесса.Если он работает при использовании полного пути, но не работает при использовании относительного пути, тогда, очевидно, ваш относительный путь не ведет туда, куда он должен вести.Скорее всего, потому что текущий каталог процесса, который должен обращаться к этому файлу, не тот, каким он должен быть.

Поскольку мы говорим о DLL здесь, я предполагаю, что проблема заключается в том, что при запуске программы, которая на самом делес использованием DLL эта программа запускается из другого места, отличного от того, в котором находится файл проекта DLL. Скорее всего, потому что проект находится в другом каталоге, чем проект DLL.Visual Studio по умолчанию будет использовать каталог, в котором находится файл проекта, в качестве рабочего каталога для процесса.Вы можете изменить рабочий каталог, который Visual Studio будет использовать в свойствах проекта в разделе «Отладка».Скорее всего, вы захотите, чтобы ваши спрайты располагались относительно приложения, которое их использует, а не какой-либо библиотеки DLL, которую использует приложение.Если эти спрайты на самом деле привязаны к библиотеке и необходимы для функционирования библиотеки, с другой стороны, вы можете рассмотреть возможность встраивания файлов в библиотеку, например, как resources или как минимум местоэти файлы относятся к библиотеке и получают к ним доступ в зависимости от расположения библиотеки DLL, а не от текущего каталога процесса, использующего библиотеку DLL.Чтобы узнать путь к вашей DLL, см. Ответ, связанный в ответе пользователя user2176127…

0 голосов
/ 16 декабря 2018

../Sprites/ExpandBlack.png, ..\\Sprites\\ExpandBlack.png и Sprites/ExpandBlack.png все ссылаются на один и тот же относительный путь.

Относительные пути добавляются к рабочему каталогу процесса.DLL используют тот же рабочий каталог.

Чтобы получить путь к DLL, см. Получить путь к DLL во время выполнения

...