UE4使用Dll
Part1. 创建和编译Dll
VS中创建Visual C++ > Win32 Console Application 工程模板,选择Dll,并勾上”Empty Project”。
在SolutionExplorer里选中工程,右键Add>New Item,选择C++ File
在新建的文件里输入测试代码:
extern "C" __declspec(dllexport) float getCircleArea(float radius)
{
return 3.1416 * (radius*radius);
}
菜单Project>xxxProperties,Configuration Manager,把所有的关于位设置的都设置为x64
保存后Build Solution。
Part2 拷贝到引擎目录
在工程中找到x64文件夹下的dll. 复制到引擎Plugins目录,可以自己新建一个子文件夹放置自定义的插件。
这里放在D:\Program Files (x86)\Epic Games\4.13\Engine\Plugins\KenPlugins
Part3 UE4工程中加入Dll
创建一个C++ UE4工程
File>New C++ Class…
选择Blueprint Function Library作为父类
在生成的.h文件的类定义中加入如下定义:
public:
// Blueprint accessible method.
UFUNCTION(BlueprintCallable, Category = "Ken Libraries")
static float getCircleArea(float radius);
在.cpp中加入以下代码
typedef float(*_getCircleArea)(float radius); // Declare the DLL function. float UMyBlueprintFunctionLibrary::getCircleArea(float radius)
{
FString filePath = FPaths::Combine(*FPaths::EnginePluginsDir(), TEXT("KenPlugins/"), TEXT("SampleDll.dll")); // Concatenate the plugins folder and the DLL file. if (FPaths::FileExists(filePath))
{ void *DLLHandle; DLLHandle = FPlatformProcess::GetDllHandle(*filePath); // Retrieve the DLL.
if (DLLHandle != NULL)
{
_getCircleArea DLLgetCircleArea = NULL; // Local DLL function pointer.
FString procName = "getCircleArea"; // The exact name of the DLL function.
DLLgetCircleArea = (_getCircleArea)FPlatformProcess::GetDllExport(DLLHandle, *procName); // Export the DLL function.
if (DLLgetCircleArea != NULL)
{
float out = DLLgetCircleArea(radius); // Call the DLL function, with arguments corresponding to the signature and return type of the function.
return out; // return to UE
}
}
}
return 1.00f;
}
其中UMyBlueprintFunctionLibrary 是类的名称,*FPaths::EnginePluginsDir()是引擎的插件目录, TEXT("KenPlugins/")是自定义的文件夹, TEXT("SampleDll.dll")是dll名称
Part4 蓝图中调用dll
在蓝图的Ken Libraries分类中找到 get circle radius节点即可使用
UE4使用Dll的更多相关文章
- (UE4) 动态加载DLL
目前还没有实现,实在搞不懂为什么,大概代码如下: //------------------------------------------------------------------------- ...
- UE4 打包C++项目到win32平台报错 could not find mspdbcore.dll
解决方法: 将Visual Studio中相应系统(如32位对应x86.64位对应x64)下的 ms.*.dll 等一系列文件拷贝到 C:\Windows\System32\ 路径下.踩坑:不能只拷贝 ...
- win10环境下ue4使用游戏手柄输入
忙里偷闲,趁着源码编译需要好久的时间,把这篇博客补上,来说说怎么在win10环境中,ue4使用游戏手柄输入,也就是gamepad输入. 1.我用的手柄是rapoo v10 这款手柄,连接无线USB之后 ...
- ue4 模块的构建和加载
ue4的代码是模块的形式来组织 在源码层面,一个包含*.build.cs的目录就是一个模块 这个目录里的文件在编译后都会被链接在一起,比如一个静态库lib,或者一个动态库dll. 不管是哪种形式,都需 ...
- ue4 build configuration的解释
ue4的build系统,继承并发展了3代的一如既往的复杂.. 一.每个configuration由两部份组成:[(性能)模式]+[(内容)组成] 模式有:Debug,DebugGame,Develop ...
- UE4/Unity3D中同时捕获多高清摄像头的高效插件
本文主要讲实现过程的一些坑. 先说下要实现的目标,主要功能在UE4/Unity中都要用,能同时捕获多个摄像头,并且捕获的图片要达到1080p25桢上,并且需要经过复杂的图片处理后丢给UE4/Unity ...
- UE4游戏开发基础命令
在个人的Unrealengine账户中关联自己的GitHub账户成功之后,就可以访问UE4引擎的源码了. git clone -b release https://github.com/EpicGam ...
- dll加密工具
Virbox Protector Standalone 加壳工具可直接对dll文件进行加壳,防止代码反编译,更安全,更方便. 产品简介 Virbox Protector Standalone提供了强大 ...
- UE4杂记
一些学习UE4时的笔记,转载请注明出处. ☆ UE4逻辑 Actor 是由 AActor 类派生而来的类实例:能被放入游戏世界场景的所有游戏性对象的基础类.对象是继承自 UObject 类的类实例:虚 ...
随机推荐
- 类TreeMap
TreeMap类 import java.util.Set; import java.util.TreeMap; public class IntegerDemo { public static vo ...
- HslControls
HslControls控件库的使用demo,HslControls是一个工业物联网的控件库,基于C#开发,配套HslCommunication组件可以实现工业上位机软件的快速开发,支持常用的工业图形化 ...
- MySQL 编码:utf8 与 utf8mb4,utf8mb4_unicode_ci 与 utf8mb4_general_ci
参考:mysql字符集小结 utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则. 新项目只考虑 u ...
- python 正则表达式 re.findall &re.finditer
语法: findall 搜索string,以列表形式返回全部能匹配的子串 re.findall(pattern, string[, flags]) finditer 搜索string,返回一个顺序访问 ...
- C#打印单据
HTML: <form id="form1"> <div id="t_border"> <!- ...
- xmake-vscode插件开发过程记录
最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发. 我们先来看几张最 ...
- 如何将.Net Core应用程序部署在Linux操作系统上运行
.Net Core简介 跨平台: 可以在 Windows.macOS 和 Linux 操作系统上运行. 跨体系结构保持一致: 在多个体系结构(包括 x64.x86 和 ARM)上以相同的行为运行代码. ...
- Java实验报告(一)&&第三周学习总结
实验报告(一) 1. 打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个“水仙花数”. 源代码: public class Main { p ...
- JDK11 | 第五篇 : 启动单个Java源代码文件的程序
文章首发于公众号<程序员果果> 地址 : https://mp.weixin.qq.com/s/h1L4FmzVSix434gVt8Fc7w 一.简介 JEP330-启动单文件代码程序(L ...
- [BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap)
[BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap) 题面 给出一个长度为n的字符串,m个操作,字符串仅包含小写英文字母 操作1:在k ...