簡介
有時候需要爲ue4增加一些額外的功能,比如CustomHID讀寫
這個時候就需要從外部導入靜態庫或者動態庫(此例子是靜態庫)
初始工作
新建C++項目,在項目目錄創建Lib文件夾並把lib放入此文件夾。如圖:
CS文件
打開CS文件並修改
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.IO;
public class custom_hidue4 : ModuleRules
{
private string ModulePath
{
get { return ModuleDirectory; }
}
private string ThirdPartyPath
{
get { return Path.GetFullPath(Path.Combine(ModulePath, "../../")); }
}
public custom_hidue4(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PrivateDependencyModuleNames.AddRange(new string[] { });
PublicIncludePaths.Add(Path.Combine(ThirdPartyPath, "Lib"));
//PublicAdditionalLibraries.Add(Path.Combine(ThirdPartyPath,"Lib/", "custom_usbdll.lib"));
PublicAdditionalLibraries.Add(Path.Combine(ThirdPartyPath, "Lib/", "hidapi.lib"));
// Uncomment if you are using Slate UI
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// Uncomment if you are using online features
// PrivateDependencyModuleNames.Add("OnlineSubsystem");
// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
}
}
代碼需根據自己情況與需求進行修改
使用方式
演示的是使用藍圖庫創建的:
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "CustomHID.generated.h"
/**
*
*/
UCLASS()
class CUSTOM_HIDUE4_API UCustomHID : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "HID")
static int read_usbhid(TArray<uint8> &data);
UFUNCTION(BlueprintCallable, Category = "HID")
static int write_usbhid(TArray<uint8> data);
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "CustomHID.h"
unsigned char *read(int* len);
int write(unsigned char *data, int len);
int UCustomHID::read_usbhid(TArray<uint8> &data)
{
int len;
unsigned char *dat = read(&len);
if (dat == nullptr)
return 0;
for (int i = 0; i < len; i++)
data.Add(dat[i]);
return len;
}
int UCustomHID::write_usbhid(TArray<uint8> data)
{
unsigned char *dat = new unsigned char[data.Num()];
for (int i = 0; i < data.Num(); i++)
dat[i] = data[i];
return write(dat, data.Num());
}
其他
例子中用的hidapi.lib在下面
https://blog.csdn.net/weixin_41738734/article/details/103596404