写在前面。
系统环境:Win10 X64
引擎版本为:UE4.17.2
编译器版本为: VS2015Pro
因为项目需要数据库对一些数据进行管理和其他的操作,所以花了些时间研究了一下如何在UE4中使用Sqlite数据库。
围观了许多Blog和Answer,要么语焉不详,或者是版本太古老。
另外再吐槽一下官方文档,说是将Sqlite已经集成到引擎里了,一没看到源码,二没找到文档,简直坑。
具体思路是这样的
首先,不管是Sqlite也好,Android也好,FBX也好,其实都是第三方的Module。
其具体位置都在这里"Engine\Source\ThirdParty\",这里存放的是所有的第三方的Module。
那如果按照第三方的Module引入,似乎就是可行的了。
在开始之前,请先看一下这几篇文档:
第一篇:
第二篇:
第三篇:
本篇是用的导入静态库.Lib的方法。从理论上来讲,导入动态库.Dll也是可行的,只是需要更改相应的代码。
下面开始具体的过程,我会写的尽量详细,供以后查阅使用。
Step 1: 下载相关源码
3)下载Sqlite Dll库 <sqlite-dll-win64-x64-xxxxxxx.zip>
Step 2: 编译.Lib库
1)将sqlite-dll-win64-x64-xxxxxx.zip解压到当前文件夹下
2)运行Visual Studio 2005 Command Prompt命令行程序。
i.打开VS2015>>选择工具>>Visual Studio命令提示
ii.输入命令行
//移动到sqlite-dll-win64-x64-3220000文件夹下
//我把文件放在了桌面上,所以是这个地址,你需要将cd后面的命令行改成你解压文件的地址
>>cd C:\Users\用户名\Desktop\sqlite-dll-win64-x64-3220000
//编译.lib文件 注意如果不输入X64就会默认编译为X86,X大写
>>lib /def:sqlite3.def /machine:X64
如下图
现在我们有了**.lib和**.h文件(在sqlite-amalgamation-xxxxxx.zip内)。
Step 3:打开UE4安装文件夹
具体地址是:
..\Engine\Source\ThirdParty\Sqlite
Step 4:进入Sqlite文件夹
此时你会看到一个sqlite.tps文件孤零零的呆在那。
倘若你这个时候用VS打开UE4,你会发现在相同的路径下根本没有这个文件。
Step 5:创建Includes和Libs文件夹
Step 6:把.h和.c文件丢入Includes文件夹;把.lib丢入Libs文件夹
Includes
Libs
Step 7:创建Sqlite.build.cs文件并放在 "..\ThirdParty\Sqlite\" 下
Step 8:编辑Sqlite.build.cs
using UnrealBuildTool;
using System.IO;
public class Sqlite : ModuleRules
{
public Sqlite(TargetInfo Target)
{
//表示第三方库
Type = ModuleType.External;
//第三方库新模块根目录目录路径你可以通过其他方式来获取路径
//比如get { return Path.GetFullPath(Path.Combine(ModuleDirectory,"../../ThirdParty/"));}
string MyPath = UEBuildConfiguration.UEThirdPartySourceDirectory + "Sqlite/";
//包含的头文件路径,因为编译的库里面都是链接过的编译单元,
//可以认为编译单元是不包含头文件的,所以在之后的使用时还需要获取到头文件的声明信息
PublicIncludePaths.Add(MyPath + "Includes/");
if (Target.Platform == UnrealTargetPlatform.Win64)
{
//第三方静态库的路径
PublicLibraryPaths.Add(MyPath + "Libs/");
//第三方静态库的名称
PublicAdditionalLibraries.Add("sqlite3.lib");
}
}
}
保存并关闭。
Step 9:打开UE4,并创建C++项目。
Step 10:打开VS,选择UE4项目,打开以下文件路径
Source\ThirdParty\
创建按照以下结构创建文件筛选器,并把相关文件丢到对应的位置。
编译引擎。
Step 11:打开新建的UE4工程,在“Source/项目名”下找到“项目名.Build.cs”文件
Step 12:增加几行代码
using System.IO;
...
//将新的第三方库的模块添加进来
AddThirdPartyPrivateStaticDependencies(Target, "Sqlite");
Step 13:添加依赖项
右键项目属性>>
NMake>>包含搜索路径>>添加库的目录位置>>确定>>应用
Step 14:在项目工程类里面#include你的库里面的头文件并测试
如果按照步骤,此时应该能正确编译并运行。
需要注意的是:
1.如果需要新建一个类,要注意你的类的
.cpp
文件的第一个包含
#include
“项目工程名
.h
”应该是项目工程名的头文件。否则会编译失败。
2.发现有不识别的你所包含的头文件的错误,那就重新确认一下Module模块的名称与路径,肯定是这里出了问题。
有啥问题或者改进欢迎交流。
搞完,收工~