我一直在试图弄清楚如何为 c++ 库创建 haxe externs,并且一直在尝试让themispp中的一些类正常工作,但我有点困惑。
我将 haxelib dev 目录链接到 themis src 目录,以便更轻松地将其添加到 @:buildXml,该部分和 @:includes 似乎工作正常,但我在设置引用 c++ 枚举和模板的外部时遇到问题,所以我想知道最好的方法是什么。
这是我正在尝试为其创建外部的文件: themis/secure_keygen.hpp
密钥对生成接口:themis wiki
enum asym_algs{EC, RSA};
template <asym_algs alg_t_p>
class themispp::secure_key_pair_generator_t {
void gen();
const std::vector<uint8_t>& get_priv();
const std::vector<uint8_t>& get_pub();
};
这是我目前的进展:
@:buildXml("
<files id='haxe'>
<compilerflag value='-I${haxelib:themis}/src/wrappers/themis/themispp/'/>
<compilerflag value='-I${haxelib:themis}/src/soter/'/>
<compilerflag value='-I${haxelib:themis}/src/themis/'/>
</files>
<files id='__lib__'>
<compilerflag value='-I${haxelib:themis}/src/wrappers/themis/themispp/'/>
<compilerflag value='-I${haxelib:themis}/src/soter/'/>
<compilerflag value='-I${haxelib:themis}/src/themis/'/>
</files>
")
@:include("soter_error.h")
@:include("themis_error.h")
@:include("themis.h")
@:include("secure_keygen.hpp")
@:include("secure_rand.hpp")
@:native("themispp::secure_key_pair_generator_t")
extern class SecureKeyPairGeneratorEC
{
@:native("themispp::secure_key_pair_generator_t<themispp::EC>")
public static function create():SecureKeyPairGeneratorEC;
}
主文件.hx
class Main
{
static function main()
{
SecureKeyPairGeneratorEC.create();
}
}
尝试编译:
-cpp bin/win -cp src -dce no -lib themis -main Main
错误:
Error: Main.cpp
./src/Main.cpp(33): error C2653: 'themispp': is not a class or namespace name
./src/Main.cpp(33): error C2065: 'secure_key_pair_generator_t': undeclared identifier
./src/Main.cpp(33): error C2065: 'EC': undeclared identifier
./src/Main.cpp(33): error C2059: syntax error: ')'
Error: Build failed