当前位置: 首页 > news >正文

无极游戏网邯郸seo推广

无极游戏网,邯郸seo推广,wordpress 头部 固定,帮朋友免费做网站cryptopp是一个开源免费的算法库,这个库的用途非常多,我常常用这个库来做加解密的运算。这段时间在折腾UE5.4.4,学习的过程中,准备把cryptopp移植到游戏的工程内,但UE的编译环境和VS的编译环境完全不同,能在…

cryptopp是一个开源免费的算法库,这个库的用途非常多,我常常用这个库来做加解密的运算。这段时间在折腾UE5.4.4,学习的过程中,准备把cryptopp移植到游戏的工程内,但UE的编译环境和VS的编译环境完全不同,能在VS下顺利编译的cryptopp代码,移植之后,全在报错,错误千奇百怪,我尝试了修复这些错误,结果有一些错是根本修复不了的。我列举一些典型的错误如下:

12>D:\UEProject\Dawn\Source\cryptopp\code\algebra.cpp(1): error : Expected algebra.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\algparam.cpp(1): error : Expected algparam.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\allocate.cpp(1): error : Expected allocate.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\arc4.cpp(1): error : Expected arc4.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\aria.cpp(1): error : Expected aria.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\asn.cpp(1): error : Expected asn.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\authenc.cpp(1): error : Expected authenc.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\base32.cpp(1): error : Expected base32.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\base64.cpp(1): error : Expected base64.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\basecode.cpp(1): error : Expected basecode.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\blake2.cpp(1): error : Expected blake2.h to be first header included.
12>D:\UEProject\Dawn\Source\cryptopp\code\blowfish.cpp(1): error : Expected blowfish.h to be first header included.


1>D:\UEProject\Dawn\Intermediate\Build\Win64\x64\UnrealGame\DebugGame\cryptopp\Definitions.cryptopp.h(19): note: 参见“CRYPTOPP_API”的前一个定义
1>D:\UEProject\Dawn\Source\cryptopp\code\config_misc.h(121): error C4668: 没有将“CRYPTOPP_GCC_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\config_misc.h(121): error C4668: 没有将“CRYPTOPP_LLVM_CLANG_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\config_misc.h(122): error C4668: 没有将“CRYPTOPP_APPLE_CLANG_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\config_misc.h(194): error C4668: 没有将“CRYPTOPP_GCC_DIAGNOSTIC_AVAILABLE”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\misc.h(644): error C4668: 没有将“CRYPTOPP_GCC_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\misc.h(644): error C4668: 没有将“CRYPTOPP_LLVM_CLANG_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”
1>D:\UEProject\Dawn\Source\cryptopp\code\misc.h(645): error C4668: 没有将“CRYPTOPP_APPLE_CLANG_VERSION”定义为预处理器宏,用“0”替换“#if/#elif”

这些错有些是UBT的配置问题,有些是作者对C++宏定义本身写法不够严谨引起的,还有一些离谱的错误,应该和编译环境有关。

这些错误完全无法解决,所以我想了一个办法,就是在外部用VS2022直接编译cryptopp工程,然后生成cryptopp的库文件,通过UE Moudle的方式,将库引入UE5.4.4。

具体方法如下:

第一步,编译cryptopp,打开cryptopp目录中cryptest.sln这个工程文件,然后打开项目cryptlib这个工程的属性,将C/C++下的代码生成中,运行库一栏选择为MD方式(多线程DLL)。然后编译整个库。得到cryptopp.lib文件。

第二步,把crypto作为一个moudle引入到UE项目内。在UE工程的source目录下,创建cryptopp目录。并且在cryptopp内继续创建inc和lib目录。将相应的文件拷贝到对应目录。

第三步,在cryptopp目录下创建cryptopp.Build.cs文件。内容如下:

using System.IO;
using UnrealBuildTool;public class cryptopp : ModuleRules
{public cryptopp(ReadOnlyTargetRules Target) : base(Target){//PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;Type = ModuleType.External;PublicIncludePaths.AddRange(new string[] {// ... add public include paths required here ...});PrivateIncludePaths.AddRange(new string[] {// ... add other private include paths required here ...});PublicDependencyModuleNames.AddRange(new string[]{// "Core",// ... add other public dependencies that you statically link with here ...});PrivateDependencyModuleNames.AddRange(new string[]{//"CoreUObject",//"Engine",// "Slate",// "SlateCore",// ... add private dependencies that you statically link with here ...	});DynamicallyLoadedModuleNames.AddRange(new string[]{// ... add any modules that your module loads dynamically here ...});// 添加导入库或静态库PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "lib", "cryptlib_Release.lib" ));}
}

主要是把Type改成ModuleType.External, 告诉UBT这个模块是第三方库,不需要编译,然后再设置好需要导入的库文件和路径。

最后一步,在UE主模块的编译脚本内,添加要引入的模块,不加入的话会报链接找不到符号的错误。

		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "cryptopp" });

加入之后,重新刷新vs工程,然后再编译工程,就可以使用cryptopp了。

http://www.shuangfujiaoyu.com/news/24466.html

相关文章:

  • 常州微信网站建设市场市场营销策划案例经典大全
  • 模板下载网站佛山seo优化外包
  • 山东网站建设网站免费优化
  • 搭理彩票网站开发seo新方法
  • 联盟网站制作创网站永久免费建站
  • 室内设计效果图一套方案正安县网站seo优化排名
  • 球迷类的网站如何做佛山网站快速排名提升
  • 广州做网站哪家公司好百度推广客服电话人工服务
  • 武汉做网站要多少钱百度首页排名代发
  • 南昌高端网站定制seo排名优化点击软件有哪些
  • 合肥做网站大概多少钱灰色词seo推广
  • 深圳住房和建设管理局官方网站优化精灵
  • 枣庄高端网站建设东莞网站优化公司哪家好
  • 网站帮企业做推广价格怎么算体验营销案例
  • 上海工程建设信息网公司优化是什么意思
  • 电子商务网站的建设目标最近的新闻有哪些
  • 简单flash个人网站黑帽seo是什么意思
  • 做网站起诉重庆森林在线观看
  • 网站开发属于软件吗电商网站制作
  • magento网站制作软文发稿
  • 网站运营推广方法总结上首页的seo关键词优化
  • 苏州网站提升排名app推广注册接单平台
  • 合肥制作企业网站免费创建网站软件
  • 淘宝的网站建设网站怎么做收录
  • wordpress中文客户端seo技术公司
  • 网站模版购买如何让百度收录
  • 做网站如何连数据库南京网站推广公司
  • php动态网站开发软件长尾词seo排名
  • 南京网页网站制作宁波seo关键词优化教程
  • 中山做app网站公司哪家好aso是什么意思