【详细全流程】UE4调用第三方库 动态链接库 dll C++_虚幻官方第三方库使用-程序员宅基地

技术标签: 虚幻4  c++  ue4  dll  


2022/2/27
UE4.24/4.26/4.27均测试成功
VS2019/2022均测试成功

0 引言

近期做的一个虚幻4项目,涉及到非常复杂的数学物理计算,需要调用一个现成的C++库以计算。解决问题途中,我遇到了一些坑,查阅了一些文章,最终尝试成功。在这篇文章中,我会
1.简要提及动态调用法和我的补充
2.使用UE4.24,从一个空白工程开始到打包,一步一步详细介绍静态调用方法。
水平有限,欢迎建议和指正

1 动态调用(仅使用.dll文件)

参考了这位大哥的博文https://blog.csdn.net/qq_36409711/article/details/82112867确实成功了
但是据评论所言这种方法在打包之后会有一点路径上的问题,因为我的项目适合静态调用,说以我没有最后去测试打包之后的问题

我对C/C++库的建立作一点补充:
动态调用dll,只需要一个dll文件,方法是通过函数名称 找到dll里的函数,进行调用。许多文章里说为了避免名称错乱,要使用Cextern "C",目的是使用c编译保证名称不错乱。
这里需要解释C/C++的不同,C库不支持重载,而C++支持重载(存在多个不同参数的同名函数),因此C++的dll里面,函数名称前后会多一堆符号和字母来区分重载函数。
所以,要看情况考虑。如果你的库里有重载函数,那么不能使用C编译,必须是C++,当然调用方法也很简单,只需要使用dll查看工具查看生成的dll中的实际函数名称,接着在通过函数名称找函数的时候,使用函数实际完整的名称(前后带一堆字母符号的函数名)即可

2 静态调用(需要.h.dll.lib文件)

2.1 创建dll库

打开VS2019
选择动态链接库模板创建

在这里插入图片描述

命名Dll3
在这里插入图片描述
初始界面。自动生成的文件都不用改

在这里插入图片描述
我们要64位库,默认x86所以改成x64
在这里插入图片描述
新建DLL3.cpp文件
在这里插入图片描述

新建DLL3.h文件
在这里插入图片描述
简单做一个自增的函数
DLL3.h中如下代码
在这里插入图片描述

#pra
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_47110957/article/details/123161674

智能推荐

静电场点电荷matlab,静电点电荷论文,关于利用Matlab模拟静电场的分布相关参考文献资料-免费论文范文...-程序员宅基地

文章浏览阅读190次。导读:该文是关于静电点电荷论文范文,为你的论文写作提供相关论文资料参考。王静 王亚芳 董爱国 程方锐 张瑞杰 吕砚荻(中国地质大学(北京)物理实验示范中心 北京 100083)摘 要:Matlab是一种功能强大、效率高、便于进行科学和工程计算的交互式软件包.本文使用Matlab软件,给出点电荷和“无限长”直导线,以及同轴圆柱电极产生的静电场的等势线分布图.结果表明利用Matlab软件..._程方锐博士

elementui 表单清空_vue+ElementUI 关闭对话框清空验证,清除form表单的操作-程序员宅基地

文章浏览阅读1.5k次。前面跟大家提到过 elementUI验证的问题,那么今天就来看看 点击对话框和关闭按钮 怎么清空验证,清空form表单,避免二次点击还会有 验证错误的提示1、首先在你的对话框 取消按钮 加一个click事件,例如:(ps::callOf里面的addGroupData和ref一 一对应起来)取 消确 定2、点击取消按钮,关闭对话框,清除表单验证callOf(formName){this.creatG..._清除所有elementui form清楚表格交验

解决sessionStorage在同一网站下不共享的问题_sessionstorage 不共享-程序员宅基地

文章浏览阅读3.7k次。一开始用localStorage,不论打开多少个页面,哪怕关掉重新打开,同一个网站下的存储的数值还在,问题是,不能同时登录多个账户,以及设置过期时间等后来启用sessionStorage,可以登录多个账户了,页面一关存储的数值也会自动被清掉,不存在安全问题;但来了新的问题,登录后,父页面跳转打开的新页面,两个页面之间的值无法共享了。后来想了一下,可以利用window.opener来解决,自己写..._sessionstorage 不共享

idea 如何导入多个maven项目(父子工程)_idea怎么导入父子结构的maven项目-程序员宅基地

文章浏览阅读1.2k次。我这里用的是idea2019.2的版本第一步:第二步:第三步:第四步:剩下的直接next_idea怎么导入父子结构的maven项目

计算机相关英语翻译文章,《计算机专业英语》部分文章翻译-程序员宅基地

文章浏览阅读102次。Communication channels are an essential element of every communication system. These channels actually carry the data from one computer to another. There are two categories of communication channels. ..._fiber-optic cable transmits data

ログが見付かりません-程序员宅基地

文章浏览阅读67次。using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;...

随便推点

计算机1068错误代码,win7系统启动Wlan autoconfig网络服务显示错误代码1068如何解决...-程序员宅基地

文章浏览阅读3.1k次。win7系统发现桌面右下角网络图标显示红叉或图标正常不能上网,并且打开网络和共享中心显示,依赖的服务或组无法启动,这时候我们需要打开Wlan autoconfig服务。但是在服务项目中找到Wlan autoconfig服务是启用时显示错误代码为1068,怎么才能解决这个问题呢?接下去系统城小编为大家讲解解决方法。1、我们来win7系统的桌面,点击开始在菜单中点击“运行”;2、点击运行弹出来的运行..._win7wlan依赖服务1068错误 csdn

附加进程调试_插件附加进程调试的步骤-程序员宅基地

文章浏览阅读400次。附加进程调试_插件附加进程调试的步骤

JAVA中数组属于一种原生类_java笔试题答案详解[共7页]-程序员宅基地

文章浏览阅读6k次。《java笔试题答案详解[共7页]》由会员分享,可在线阅读,更多相关《java笔试题答案详解[共7页](7页珍藏版)》请在人人文库网上搜索。1、java笔试题以及答案详解 一 一、单项选择题 1Java是从()语言改进重新设计。AAda BC+ CPasacal DBASIC答案:B2下列语句哪一个正确()A Java程序经编译后会产生machine codeB Java程序经编译后会产生byte..._数组是一种对象还是原生类

Oracle SQL optimizer cost model-程序员宅基地

文章浏览阅读141次。Starting with Oracle9i you have the ability to view the estimated CPU, TEMP and I/O costs for every SQL execution ..._optimizer_cost

mysql lvs keepalive_lvs+keepalive实现apache与mysql负载均衡跟读写分离-程序员宅基地

文章浏览阅读88次。主机 iprouter 192.168.10.254 192.168.24.254web分发器 192.168.24.1mysql分发器 192.168.24.2web服务器1192.168.24.10web服务器2 192...._keepalive+lvs+mysql+apache+lamp的目的

CPC客户端安装教程-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏23次。CPC客户端安装经验总结!_cpc客户端

推荐文章

热门文章

相关标签