私は持っていvector<vector <string>> a
ます; どうすればそれをエンクレーブに渡すことができますか? edl 関数の宣言方法。app、edl、および enclave の関数宣言のサンプルは大歓迎です。
私はこれを認識しています: C++ Arguments to SGX Enclave Edge Functions。
Aでも合格するサンプルvector<string>
は、私にとっては問題ありません。
update1: 私はこれを思いつきました:
App.cpp
const char *convert(const std::string & s)
{
return s.c_str();
}
vector<string> members_data;
member_data.push_back("apple");
member_data.push_back("orange"); //just for sample
std::vector<const char*> vc;
std::transform(members_data.begin(), members_data.end(), std::back_inserter(vc), convert);
edl:
trusted {
public void ecall_receive_vector([in, size=len] const char **arr, size_t len);
};
飛び地
void ecall_receive_vector(const char *arr[], size_t len)
{
vector<string> v(arr, arr+len);
printf("%s\n", v[2].c_str());
}
しかし enclave はデータを受け取らず、プログラムはエラーなしで完全にコンパイルされます。誰でも助けてもらえますか?printf はサンプル ocall です。