(This tuto was possible with the help of those projects:
https://unreal.gg-labs.com/wiki-arch…s/linking-dlls)
First, open a project and create a Blueprint Function Library C++ class:
Click Next and Create Class and visual studio should open, else double click on the class inside the engine.
Copy this into MyBlueprintFunctionLibrary.h :
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"
/**
*
*/
UCLASS()
class VIRTUALREALITY_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "MyLibrary")
static void ImportDLL();
UFUNCTION(BlueprintCallable, Category = "MyLibrary")
static int Add(int x, int y);
};
Copy this into MyBlueprintFunctionLibrary.cpp :
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyBlueprintFunctionLibrary.h"
typedef int(*_Add)(int x, int y);
void* v_dllHandle;
_Add m_Add;
void UMyBlueprintFunctionLibrary::ImportDLL()
{
FString filePath = "E:/CsPlugin.dll";
FString procA = "Add";
v_dllHandle = FPlatformProcess::GetDllHandle(*filePath);
m_Add = (_Add)FPlatformProcess::GetDllExport(v_dllHandle, *procA);
}
int UMyBlueprintFunctionLibrary::Add(int x, int y)
{
int out = m_Add(x, y);
return out;
}
And build this plugin (do it again if you have error):
Then download this visual project that include a C# demo that will create a dll to be used by the class we created in Unreal.
https://anonfiles.com/Fds7W7Leo3/CsPlugin_zip
Open the project, build it with the same platform you use to compile your Unreal class (x86 or x64) then grab the DLL built and move it to a path sharing the same path as filePath in MyBlueprintFunctionLibrary.cpp
Now, open a blueprint, right click and now you can call Add() from your Unreal plugin that come from a C# plugin.
Enjoy C# dev on Unreal Engine