①visual studio code 打開(kāi)示例項(xiàng)目后中文亂碼問(wèn)題:

原因:項(xiàng)目之前的編碼方式是系統(tǒng)中文字符集 GB2312,但VS Code中默認(rèn)的是UTF-8,兩者的兼容性并不怎么好
解決方法:
右下角點(diǎn)擊UTF-8,然后選擇Reopen with Encoding,選GB2312,就能解決亂碼問(wèn)題


②UUID和GUID
UUID全稱:Universally Unique Identifier,即通用唯一識(shí)別碼。是一個(gè)由4個(gè)連字號(hào)(-)將32個(gè)字節(jié)長(zhǎng)的字符串分隔后生成的字符串,總共36個(gè)字節(jié)長(zhǎng)。比如:550e8400-e29b-41d4-a716-446655440000
GUID:是微軟對(duì)UUID這個(gè)標(biāo)準(zhǔn)的實(shí)現(xiàn)。UUID是由開(kāi)放軟件基金會(huì)(OSF)定義的。UUID還有其它各種實(shí)現(xiàn),不止GUID一種。
③GMSSL生成動(dòng)態(tài)鏈接庫(kù)
從GMSSL倉(cāng)庫(kù)拉下來(lái)的GMSSL需要生成動(dòng)態(tài)鏈接庫(kù)才能在UE4里面使用
確認(rèn)已經(jīng)安裝ActivePerl Visual Studio NASM并且都添加到了環(huán)境變量路徑里面(會(huì)用到NMake,但是Visual Studio安裝自帶NMake,不需要額外安裝,只需要使用Developer Command Prompt命令行工具執(zhí)行命令即可)
由于我要在UE4里面使用,所以我要編譯64位dll,那我需要使用64位的Developer Command Prompt
perl命令后面跟Configure文件所在路徑,或者命令行通過(guò)切換工作路徑到我目標(biāo)Configure所在文件夾
perl D:\GmSSL-master\Configure VC-WIN64A
常見(jiàn)問(wèn)題:
①NASM not found - please read INSTALL and NOTES.WIN for further details
解決方法將NASM.exe所在目錄(一般為C:\Program Files\NASM)添加到系統(tǒng)合用戶環(huán)境變量的PATH里
②Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) (@INC contains: C:\Perl64\site\lib C:\Perl64\lib) at C:\Perl64\lib/ActivePerl/Config.pm line 400.
解決方法修改C:\Perl64\lib\ActivePerl\Config.pm,大約在400行左右,將該函數(shù)方法實(shí)現(xiàn)體注釋掉
# Prevent calling Win32::Console::DESTROY on a STDOUT handle
#my $console;
sub _warn {
# my($msg) = @_;
# unless (-t STDOUT) {
# print "\n$msg\n";
# return;
# }
# require Win32::Console;
# unless ($console) {
# $console = Win32::Console->new(Win32::Console::STD_OUTPUT_HANDLE());
# }
# my($col,undef) = $console->Size;
# print "\n";
# my $attr = $console->Attr;
# $console->Attr($Win32::Console::FG_RED | $Win32::Console::BG_WHITE);
# for (split(/\n/, "$msg")) {
# $_ .= " " while length() < $col-1;
# print "$_\n";
# }
# $console->Attr($attr);
# print "\n";
}
執(zhí)行
nmake
,開(kāi)始刷屏
刷屏結(jié)束后
nmake install
但會(huì)有問(wèn)題,所以直接將弄好的dll放上來(lái),希望簡(jiǎn)書(shū)不會(huì)吞
https://1drv.ms/u/s!AnIe0YG57kxNmCvZAMV0LCHmhWVx?e=H5nH9k
然后是使用這個(gè)dll的文檔
https://1drv.ms/w/s!AnIe0YG57kxNmH0ZAY_uvuAooUSI?e=bxqoNf
④UE4創(chuàng)建第三方庫(kù)插件,添加UObject出現(xiàn)Cannot open include file: 'UObject/NoExportTypes.h',解決方法:沒(méi)有引入CoreUObject模塊,在你插件的Build.cs的PublicDependencyModuleNames添加相應(yīng)的CoreUObject模塊,順便把Engine和InputCore也添加上,這些都很常用。
另外,如果用了lib,最好把lib要用的頭文件放在插件的Public文件夾里面,然后在你插件的頭文件里面include這個(gè)lib的頭文件。同樣地,一些常用的頭文件也可以在插件的頭文件里面include,這樣很多時(shí)候就只需要include插件的頭文件不用在cpp里面額外去再include。
⑤UStruct UEnum 的聲明,一般會(huì)在Public文件夾里面新建一個(gè)頭文件然后去編輯,這個(gè)頭文件有格式的要求:
首先要有#pragma once ,如果這個(gè)文件里面聲明了UStruct,則必須要Include它的generated.h,同時(shí)記得UStruct里面要GENERATED_USTRUCT_BODY()
⑥.puk密鑰文件,廣發(fā)的公鑰.puk文件讀取公鑰方法就是直接將.puk文件讀到字節(jié)數(shù)組里面,然后將字節(jié)數(shù)組轉(zhuǎn)換成16進(jìn)制字符串,截取字符串的后面128個(gè)字符
⑦ue4內(nèi)置有md5算法,但是和php的算法有不一樣的地方,php的md5算法,一般是先將hex字符串轉(zhuǎn)到字節(jié)數(shù)組,然后再將字節(jié)數(shù)組轉(zhuǎn)md5,而UE4是直接將hex字符串轉(zhuǎn)asc碼然后轉(zhuǎn)md5,這是需要注意的地方。同樣地,base64也是一樣的操作,要想和php的一樣,就需要先將hex字符串轉(zhuǎn)字節(jié)數(shù)組然后再進(jìn)行base64加密
⑧智能指針,用來(lái)避免發(fā)生內(nèi)存泄漏很方便,但還是要注意會(huì)發(fā)生數(shù)組指針類型取成員超出了數(shù)組范圍導(dǎo)致的錯(cuò)誤
⑩身份證驗(yàn)證,常用的身份證驗(yàn)證,參考了
https://jingyan.baidu.com/article/6b97984db00e9a1ca3b0bf5f.html
里面java的寫(xiě)法,將算法寫(xiě)到了藍(lán)圖里面,原理是身份證的第18位是校驗(yàn)位,身份證的前17位通過(guò)加權(quán)計(jì)算后%11的值通過(guò)選取,將會(huì)和校驗(yàn)位的值相等。
*17位的加權(quán)值分別為7、9、10、5、8、4、2、1、6、3、7、9、0、5、8、4、2
*%11后余數(shù)選取,從0開(kāi)始到11分別是1、0、x、9、8、7、6、5、4、3、2