Unreal Engine 4
http://uengine.ru/forum/

Как правильно подключить .h
http://uengine.ru/forum/viewtopic.php?f=19&t=14159
Страница 1 из 2

Автор:  Agny [ 01 авг 2018, 15:48 ]
Заголовок сообщения:  Как правильно подключить .h

Создал новый Blueprint Function Library class.

В .cpp добавил:

Код:
#include <XInput.h>

#pragma region Method Calls
// Calls the method XInputVibration that was imported from the DLL.
void UALLInput::XInputVibration(int32 DeviceIndex, float leftMotor, float rightMotor)
{
   // Create a new Vibraton
   XINPUT_VIBRATION Vibration;

   int leftVib = (int)(leftMotor*65535.0f);
   int rightVib = (int)(rightMotor*65535.0f);

   // Set the Vibration Values
   Vibration.wLeftMotorSpeed = leftVib;
   Vibration.wRightMotorSpeed = rightVib;
   // Vibrate the controller
   XInputSetState(DeviceIndex, &Vibration);
}

#pragma endregion Method Calls


В .h Добавил:

Код:
UFUNCTION(BlueprintCallable, Category = "XInput Library")
      static void XInputVibration(int32 DeviceIndex, float leftMotor, float rightMotor);


Жму на компиляцию. Ошибок в строчках кода не находит.
Но компиляция не проходит. Пишет что то типа модуль не собирается.

Почему так? Не подскажете куда копать? Как правильно подключать дополнительные .h?

Автор:  Snake [ 01 авг 2018, 20:00 ]
Заголовок сообщения: 

посмотри как анриаловские BlueprintFunctionLibrary сделаны и сравни что у тебя.

Автор:  Agny [ 02 авг 2018, 14:25 ]
Заголовок сообщения: 

Т.е их нельзя никак подключать?

Меня в некоторых случаях спасало копирование в свой код элементов из подключаемых файлов.
Жмешь правой кнопкой мыши, выбираешь "Перейти к определению" и копируешь оттуда в свой код определение.
Сам файл .h оставляешь не подключенным. И всё работало.

Автор:  ue4help [ 02 авг 2018, 23:53 ]
Заголовок сообщения: 

Непонятно что за XInput.h хедер сторонней библиотеки? Как выглядит хедер UALLInput?

Автор:  Snake [ 03 авг 2018, 07:58 ]
Заголовок сообщения: 

в .cs подключаешь модуль которому принадлежит нужный хедер
в свой файл в инклюдах добаляешь нужный хедер
все.

Автор:  Agny [ 03 авг 2018, 14:13 ]
Заголовок сообщения:  Re:

ue4help писал(а):
Непонятно что за XInput.h хедер сторонней библиотеки? Как выглядит хедер UALLInput?


XInput.h хедер из библиотеки Microsoft DirectX SDK (June 2010).

UALLInput выглядит как стандартный Blueprint Function Library, который автоматом создается. ALLInput - это название класса и ничего больше.

Этот код для примера я привел. Мой вопрос то в другом.

Snake писал(а):
в .cs подключаешь модуль которому принадлежит нужный хедер
в свой файл в инклюдах добаляешь нужный хедер
все.


Я просто не хочу использовать в своем коде сторонние DLL. Просто написать код, который содержит DLL непосредственно в VS и прикрутить к Блюпринтам.

Автор:  Agny [ 04 авг 2018, 07:53 ]
Заголовок сообщения: 

Snake, в моем примере XInput.h находится в папке Engine/Source/ThirdParty/Windows/DirectX/include. И к какому модулю она относится? Что я должен написать в .cs ?

Я так и не понял.

Автор:  ue4help [ 05 авг 2018, 22:57 ]
Заголовок сообщения: 

Насколько я понял XInput.h это библиотека DirectX и работает только в системе Windows. Что указывает ошибка компиляции UBT, так как движок рассчитан на различные платформы, то UTB просто не пропустит файл, потому что в файле идет проверка на принадлежность к платформе.
Вариант использовать модуль ApplicationCore и интерфейс XInputInterface.h, в котором включен файл XInput.h. Или подключать библиотеку DirectX как стороннюю.

Автор:  Agny [ 06 авг 2018, 14:11 ]
Заголовок сообщения: 

dinput.h - это библиотека DirectX. Лежит в той же папке что и XInput.h. Но компилятор её пропускает если подключить. Не выдает ошибку.

Автор:  ue4help [ 07 авг 2018, 11:14 ]
Заголовок сообщения: 

Исходники посмотрел как Epic Games добавляли.

Код:
#pragma pack (push,8)
#include "Windows/AllowWindowsPlatformTypes.h"
#include <XInput.h>
#include "Windows/HideWindowsPlatformTypes.h"
#pragma pack (pop)

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/