ue4 c++ 怎么引入dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ue4 c++ 怎么引入dll相关的知识,希望对你有一定的参考价值。

参考技术A 引入dll 不就是 用 #pragma comment(lib,"和dll同时生的lib的路径.lib")吗?
或者 HMODULE hModule = LoadLibrary("要用的dll文件路径");
然后 用 所调用函数类型的指针 = GetProcAddress(hModeule,"函数名");
这样就可以 使用 你想要用的函数了,
第一种方式也有不足之处
第二种方式 比较麻烦 需要你理解函数指针
不过函数指针 也不难
比如说 定义了一个 函数 void a (int a )
然后定义 函数指针的时候 就可以
void (*p)(int )
而这个p就是一个可以接受 一个void类型的返回值 和 形参为int类型的函数了
所以有了 p = &a
然后 直接就可以使用(*p)(123);
这样就调用了 函数a里面的代码了
如果此时 也有一个void b(int b )
同样的 p 也可以获取到 &b的地址

废话有点多了 也不知道 你要的是不是这个
在提醒一点使用第二个 虽然 不会出现 无法解析的外部函数的错误,但是在导出的时候要用extern "C" 导出该函数 不然使用 GetProcAddress是失败本回答被提问者采纳

UE4 Unlua源码解析8 - Lua与C++之间的参数转换的实现原理

Lua与C++之间的参数转换的实现原理

2.1 Lua传给C++的参数C++怎么转换成C++属性的

PreCall中将Lua参数转换成C++参数,主要发生在下列代码中

CleanupFlags[i] = Property->SetValue(L, Params, FirstParamIndex + ParamIndex, false);

Property->SetValue传入的参数是拿到的Lua参数,当他被放到缓存区的时候为什么成了C++类型

可以看到SetValue调用到的是,虚方法SetValueInternal

首先在PropertyDesc中存储FProperty的时候,用的是联合,所以某一个属性,最终会成为FProperty或者继承FProperty的特例FProperty,然后虚方法SetValueInternal会在每一个特例FProperty中实现,本例中传进来是Lua String的时候,会走到FStringPropertyDesc的SetValueInternal实现,如下二图

可以看到使用Lua APIlua_tostring转换成C的类型。

2.2 C++返回给Lua的参数或者UObjct对象,怎么在Lua端自动变成Lua对象的

此例中,并没有返回给Lua值,如果有的话,参数怎么处理呢,继续看

之前讲过PostCall中,从Params缓存区中读出C++返回值,转换成Lua返回值,Push进Lua栈,返回给Lua。

可以看到PostCall会调用到这里

和Lua转C++很像,调到的是虚方法GetValueInternal,不同的参数有不同的实现

可以看到String的实现,还是通过Lua的API转换

但是有一个比较特殊的存在,会牵扯到其他内容,这个特殊的存在,就是假如返回值是一个UObject的对象呢,怎么转换成Lua呢,按理说是没那么简单的,事实也确实不简单,这里就牵扯到UE对象和Lua对象的绑定,静态绑定和动态绑定,见下节吧!

以上是关于ue4 c++ 怎么引入dll的主要内容,如果未能解决你的问题,请参考以下文章

C#引入QT5环境下生成的DLL用不了,报错是无法加载 找不到指定模块

VS2019 C++动态链接库的创建使用

ue4怎么用c++绑定mesh

delphi7中如何引入外部的dll文件

[ue4] Niagara的Indirect Draw

[ue4] Niagara的Indirect Draw