UE4 靜態庫導入Custom HID

簡介

有時候需要爲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

發佈了60 篇原創文章 · 獲贊 24 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章