Я работаю с Intel SGX SDK внутри Microsoft Visual Studio и получаю предупреждение типа LNK4217 при попытке скомпилировать мое решение.Мое решение состоит из 4 проектов, однако предупреждение о сборке генерируется из-за конфликта между двумя проектами: Enclave
и StaticLib
.
Проект StaticLib
- это статическая библиотека, используемая для кодаповторно использовать созданный, выполнив все шаги в следующем руководстве: Пошаговое руководство. Создание и использование статической библиотеки (C ++) .
Проект Enclave
- это проект, определенный и настроенный в соответствии сссылки на Справочник разработчика Intel для ОС Windows, представленные на сайте Intel.
Я уже пытался следовать решениям, представленным в аналогичных вопросах в stackoverflow, а также прочитать и понять, что означает это предупреждение на странице, посвященнойот Microsoft до этого: Предупреждение инструментов компоновщика LNK4217
У меня также есть некоторые изображения свойств как проектов Enclave, так и StaticLib, но я не могу опубликовать их из-за моей репутации.(Enclave - C/C++ - General
, Enclave - C/C++ - Preprocessor
, Enclave - C/C++ - Code Generation
, Enclave - Linker - General
, Enclave - Linker - Input
, StaticLib - Configuration Properties - General
, StaticLib - C/C++ - General
, StaticLib - C/C++ - Preprocessor
, StaticLib - C/C++ - Code Generation
, StaticLib - Librarian - General
)
СодержимоеЗаголовки, которые, по-видимому, вызывают конфликт:
#ifndef ENCLAVE_T_H__
#define ENCLAVE_T_H__
#include <stdint.h>
#include <wchar.h>
#include <stddef.h>
#include "sgx_edger8r.h" /* for sgx_ocall etc. */
#define SGX_CAST(type, item) ((type)(item))
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
#ifndef _ENCLAVE_H_
#define _ENCLAVE_H_
#include "Enclave_t.h"
#include "../StaticLib/RSAIpp.h"
#if defined(__cplusplus)
extern "C" {
#endif
#if defined(__cplusplus)
}
#endif
#endif /* !_ENCLAVE_H_ */
#ifndef _TOOLB_H_
#define _TOOLB_H_
#include "ipp\ippcp.h"
#include <iostream>
#include <iomanip>
#include <ctime>
#endif /* !_TOOLB_H_ */
Вкладка Список ошибок в Visual Studio сообщает следующее:
Severity Code Description Project File Line Suppression State
Error LNK1218 warning treated as error; no output file generated Enclave C:\GoogleDrive\FCT\MIEI\18-19\Diss\Blockchain-based storage with SGX clients for mobile games\Dissertação\Repositório\BC-SGXC-MG\Enclave\LINK 1
Warning LNK4217 locally defined symbol _wcslen imported in function "wchar_t * __cdecl std::_Maklocwcs(wchar_t const *)" (?_Maklocwcs@std@@YAPA_WPB_W@Z) Enclave C:\GoogleDrive\FCT\MIEI\18-19\Diss\Blockchain-based storage with SGX clients for mobile games\Dissertação\Repositório\BC-SGXC-MG\Enclave\StaticLib.lib(toolb.obj) 1