Предупреждение LNK4217 при использовании Visual Studio с Intel SGX SDK внутри проекта со статической библиотекой - PullRequest
0 голосов
/ 09 июля 2019

Я работаю с 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)

СодержимоеЗаголовки, которые, по-видимому, вызывают конфликт:

  • Enclave_t.h
#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
  • Enclave.h
#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_ */
  • toolb.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
...