haxe C ++ externs с шаблоном и перечислением - PullRequest
0 голосов
/ 17 декабря 2018

Я пытался выяснить, как создать haxe externs для библиотек c ++, и пытался заставить работать некоторые классы из themispp , но я немного запутался.

Я связал каталог dev haxelib с каталогом themis src, чтобы упростить добавление его в @: buildXml, эта часть и @: include работают нормально, но у меня возникают проблемы при настройке внешних ссылок, которые ссылаются на перечисления c ++ ишаблонов, поэтому мне интересно, как лучше это сделать.

Это файл, для которого я пытаюсь создать externs: 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;
}

Main.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

Сгенерировано Main.cpp

...