首页 > 系统相关 >UE4学习笔记:Windows系统下如何在C++项目里调用第三方动态库

UE4学习笔记:Windows系统下如何在C++项目里调用第三方动态库

时间:2023-05-23 19:56:14浏览次数:56  
标签:头文件 Windows 路径 C++ 文件夹 模块 字符串 UE4 第三方

本随笔介绍在Windows系统下,由UE4引擎创建的C++项目里如何实现调用第三方动态库的方法。

随笔作者还在学习阶段,对UE4引擎的使用和理解还不是非常透彻,难免会在随笔内容里出现技术上或书写上的问题,如果出现了类似的问题欢迎在评论区或者私信讨论。

 

目录

 

UE4C++项目是由一个个的模块组成,每一个模块就是一组函数、变量和类等代码的集合,模块除了包含头文件和源文件以外,还包含了被称为模块构建文件的以模块名字命名,以.Build.cs结尾的文件,该文件的作用就是定义该模块与其他模块是如何进行协作的,其中也包括如何调用第三方库。

设置第三方库头文件的路径

PublicIncludePaths.Add("IncludePath");
变量PublicIncludePaths是一个C#的字符串列表,只需要用该变量的Add方法第三方库头文件所在的文件夹路径添加到这个变量里面,就可让该模块查找到第三方库的头文件,字符串"IncludePath"指定了头文件所在文件夹的路径,该路径可为绝对路径或相对路径,如果为相对路径,那起始文件夹为源代码文件夹(即在项目里生成的被命名为“Source”的文件夹)。需要注意的是如果是在插件里面添加第三方库头文件的话,该相对路径会变为指向引擎二进制文件夹的路径,可以使用引擎预定义的路径来更改此相对路径,例如"$(PluginDir)\Source\IncludePath"

设置第三方库导入库的路径

PublicAdditionalLibraries.Add("AbsoluteImportLibraryPath/ImportLibraryName.lib");
变量PublicAdditionalLibraries是一个C#的字符串列表,只需要用该变量的Add方法将第三方库导入库所在的文件夹路径添加到这个变量里面,就可让该模块查找到第三方库的导入库文件,字符串"AbsoluteImportLibraryPath/ImportLibrary.lib"指定了导入库文件的绝对路径,该路径不能为相对路径

设置第三方库动态库的路径

RuntimeDependencies.Add(AbsoluteTargetDirectoryPath/DLLFileName.dll, "AbsoluteDLLFilePath/DLLFileName.dll");
变量RuntimeDependencies是一个自定义的变量类型,用该变量的Add方法每次添加路径的时候接受两个字符串参数,第一个字符串参数AbsoluteTargetDirectoryPath指定了需要将动态库文件复制到哪个文件夹内,一般来说将该参数设置为字符串"$(BinaryOutputDir)/DLLFileName.dll"即可。第二个字符串"AbsoluteDLLFilePath/DLLFileName.dll"指定了动态库文件所在的路径,这两个路径都必须是绝对路径。这个语句实际上执行的操作就是将第三方动态库文件复制到该模块编译好的动态库文件的同级目录下,这样在加载该模块的时候可以同时加载第三方库的动态库文件。两个字符串参数里的字段DLLFileName需要是同一个动态库文件的名字。

标签:头文件,Windows,路径,C++,文件夹,模块,字符串,UE4,第三方
From: https://www.cnblogs.com/tomato-haha/p/17426207.html

相关文章

  • c++打卡练习(37)
    比较两个分数的大小流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta1,a2,b1,b2,c1,c2,d1,d2,i; cout<<"输入要比较的两个分数"<<endl; cin>>a1; getchar(); cin>>a2; cin>>b1; getchar(); cin>>b2; if(a2>b2){ ......
  • perl 通过 swig 调用 c++ 代码
    perl通过swig调用c++代码  Swig是一个软件开发工具,可以简化不同语言与C/C++的交互(直接在其它语言的代码中调用C/C++的代码)。  记录一下成功用perl调用c++代码的例子。环境操作系统:centos7.9perl:version5.16.3swig:version2.0.10g++:version9.4.0......
  • 泛型编程(GP)和C++标准模板库(STL)
    GenericProgramming(GP)泛型编程,就是使用template(模板)为主要工具来编写程序level0:使用C++标准库level1:认识C++标准库level2:良好使用C++标准库level3:扩充C++标准库C++StandardLibraryC++标准库,编译器带的,可以看到sourcecode至于StandardTemplateLibrary->STL标......
  • C++ 线程安全和可重入函数
    线程安全线程安全是指在多线程环境下,同一函数或函数库被不同线程调用,不会出现数据不一致的情况。如何确保一个函数是线程安全的:1.对共享资源加锁。2.从逻辑上进行设计,保证资源的访问修改不会冲突。一般情况下我们使用加锁的方式保证线程安全,具体加锁操作有互斥锁、条件变量、......
  • C++
    实现一个类模板,它可以接受一组数据,能对数据排序,也能输出数组的内容。每行输入的第一个数字为0,1,2或3:为0时表示输入结束;为1时表示将输入整数,为2时表示将输入有一位小数的浮点数,为3时表示输入字符。如果第一个数字非0,则接下来将输入一个正整数,表示即将输入的数据的数量。templat......
  • Windows 11 和 Rocky 9 Linux 平台 MySQL 8.0.33 简易安装教程
    目录Windows平台安装MySQLLinux平台Rocky9安装MySQLbinarypackagerpmpackageyum源sourcepackageWindows11和Rocky9Linux初体验MySQL8.0.33简易安装教程。MySQL8.0目前最新稳定版本已经更新到了MySQL8.0.33,估计下一个稳定版本(大约在今年7月份)推出。当然,......
  • c++打卡第三十五天
    一、最大公约数1、问题描述 2、设计思路本题中可以有三种算法,其中我们提供第三种辗转相除法的代码,第一种是从1开始,由于最大公约数可以是最小的那个数,所以我们循环条件到两个之中的小数,如果这个数满足可以整除两个整数,遍历到最大的那个数时,打印出来。第二种是从小数开始循环,当......
  • C++ 模板 使用 enum 代替 typename
    enumtestEnum{A,B,C};template<testEnumC>classTestClassTemplate{public:voidprint(){printf("common\n");}};template<>classTestClassTemplate<A>{public:voidprint(){printf(&quo......
  • SQLite3 客户端程序,Win32 SDK ,C/C++
    1 WIn32SDK程序,尽量放在一个文件中,主要用到Tree,ListView,Edit控件。2 把控件封装成类,但不封装窗口回调函数。类实例为全局变量,方便消息回调函数调用执行。这样做最简单。3 Edit控件处理按键输入,模仿shell执行SQL查询4打开数据库文件时若没有此文件则新建,否则打开,打开......
  • windows通过命令行设置进程优先级
    针对进程的就通过这6个优先级来控制图形界面可以通过任务管理器操作,也可以通过其他软件 cmd命令行示例:wmicprocesswherename="processname"CALLsetpriority"value"wmicprocesswherename="firefox.exe"CALLsetpriority"realtime"wmic......