Unreal EngineのC++を短縮して、”Unreal C++”という書き方をする人も多いらしい。なんかちょっとかっこいいので真似する。(なんか前にも同じことを言ったかもしれない気もするが)
pezed開発を中断した後もずっとunreal engineを使ってたんだが、BluprintプロジェクトにしてたせいもあってC++は使ってなかった。今日になってどうしてもOpenSSLを使いたくなったので、次のwebページを参考にしながら久々にC++を弄った。

上のサイトの人は生のAESルーチンを使ってるけど、EVPを使った方が楽なことを知ってたので、そうしてみようとしたところ少し嵌った。(AESのままでも途中までは同じことになったと思う)
まずは、プロジェクトBuild.csファイルの設定だが、これ自体は問題ない。
PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “EnhancedInput”, “OpenSSL” }); // openssl追加
問題はこの後で、一旦vs2022を閉じてuprojectファイルを右クリックして、Generate Visual Studio Project Filesをやって、vs2022プロジェクトファイルを書き直してやらないと、ちゃんとプロジェクトに反映されない。pezedでいくつかモジュールを追加したけど、これが必要だって覚えてなかった。
プロジェクトにちゃんと反映させてしまえば、インクルードファイルも長々書く必要がない。
#include ”ThirdParty/OpenSSL/1.1.1t/include/Win64/VS2015/openssl/evp.h” ←こんなに書かなくていい。
#include “openssl/evp.h” ←これでいい。
それとこれはEVPの問題になると思うが、次の宣言がエラーになる。
EVP_CIPHER_CTX ctx;
なんで?ってググったらちゃんと出てきた。
スタック上ではインスタンス化できないらしい。なので上のサイトにある通りに書き直す。
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
….
EVP_CIPHER_CTX_free(ctx); 使い終わったら解放
コメント