本随笔介绍在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
需要是同一个动态库文件的名字。