首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >装入Enclave时出错:无法用CreateFile()打开文件

装入Enclave时出错:无法用CreateFile()打开文件
EN

Stack Overflow用户
提问于 2017-01-30 19:43:47
回答 4查看 1.7K关注 0票数 0

我正在尝试编写一个简单的SGX项目作为开始。因此,我有一个主主机应用程序例程,它几乎是从拉尔斯·里希特的博客复制的。

代码语言:javascript
复制
#define ENCLAVE_FILE _T("Enclave.signed.dll")
#include <tchar.h>
#include <cstdio>
#include "sgx_urts.h"
#include "Enclave_u.h"

int main()
{
    sgx_enclave_id_t   eid;
    sgx_status_t       ret = SGX_SUCCESS;
    sgx_launch_token_t token = { 0 };
    int updated = 0;

    ret = sgx_create_enclave(ENCLAVE_FILE, SGX_DEBUG_FLAG, &token, &updated, &eid, NULL);

    if (ret != SGX_SUCCESS) {
        printf("\nApp: error %#x, failed to create enclave.\n", ret);
    }


    scanf("\n");

    return 0;
}

它编译得很好(我在Visual 2015中使用Intel C++ 17.0编译器),但它没有加载enclave。我收到以下错误消息:

代码语言:javascript
复制
[sgx_create_enclavew ..\urts\win\urts.cpp:195] Couldn't open file with CreateFile()

App: error 0x200f, failed to create enclave.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-05 16:24:11

转到app_test_save项目设置。在调试下,将工作目录更改为$(SolutionDir)调试。这个答案假设两个项目app_test_save和enclave_test_save都属于相同的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2017-01-30 20:19:26

正如尼尔所指出的,当程序从Visual的调试器中运行时,sgx_create_enclave无法找到dll。当我在"Debug“文件夹中直接运行可执行文件时,它工作得很好。

因此,要使它在这两种设置中工作,一个简单的技巧是执行以下操作:

代码语言:javascript
复制
#define ENCLAVE_FILE _T("../Debug/Enclave.signed.dll")
票数 0
EN

Stack Overflow用户

发布于 2018-06-27 08:08:15

根据这一点:https://software.intel.com/en-us/forums/intel-software-guard-extensions-intel-sgx/topic/623738

如果您正在使用本地sure,请确保更改指向$(OutDir)而不是$(ProjectDir)的“当前工作目录”。

配置属性->调试->工作目录-> $(OutDir)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41944179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档