我正在尝试将 C++ 库移植到 Windows 商店应用程序的通用 Windows。在 Windows 10 上的 Visual Studio 2015 v14.0.24720.00 更新 1 中使用 x86 开发人员命令提示符。
想知道我做错了什么 - 一切都可以编译并使用以下标志正常链接:
cl /nologo /FoBuild\Obj\Windows\Release\[OBJ_FILE].obj /c /MD /Ox /W4 /EHsc /FRBuild\Obj\Windows\Release\ -DDEFINE_LITTLE_ENDIAN -DDEFINE_TRACE -D_CRT_SECURE_NO_WARNINGS -DDEFINE_WINDOWS_UNIVERSAL /AI "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\store\references" /WX /ZW /D "WINAPI_FAMILY=2" -IBuild\Include [SOURCE].cpp
和:
link /nologo /opt:ref /map Ws2_32.lib /APPCONTAINER /dll /out:Build\Obj\Windows\Release\myDll.dll [OBJ_FILE.obj]*
对于肯定应该是标准函数(例如 malloc 和 std::bad_alloc 等)的事物,会出现一大堆看起来不寻常的古怪验证错误。此外,许多这些不受支持的 API 似乎实际上存在于白名单文件中,即使它们是声明不支持。不知道我做错了什么,因为它与 /ZW /EHsc /D "WINAPI_FAMILY=2" 开关编译得很好,如此处所述https://msdn.microsoft.com/en-us/library/hh700130.aspx
该页面上的文档明确指出,当您使用 /ZW 标志时,任何在 Windows 8.x 应用商店应用程序中不允许使用的 CRT 函数都会导致编译时错误。这一切都编译得很好,即使在 arm 工具链上也是如此。
还对为什么有些参考在 vcruntime140 而有些在 api-ms-win-crt-*.dll 感到困惑。
任何人都可以阐明这些问题吗?
完整的错误列表如下。
干杯
伊恩
◦API _time64 in api-ms-win-crt-time-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _cexit in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _crt_atexit in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _execute_onexit_table in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _initialize_narrow_environment in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _initialize_onexit_table in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _initterm in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _initterm_e in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _invalid_parameter_noinfo_noreturn in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _register_onexit_function in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _seh_filter_dll in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API abort in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API terminate in api-ms-win-crt-runtime-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _strdup in api-ms-win-crt-string-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API strncat in api-ms-win-crt-string-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API strncmp in api-ms-win-crt-string-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API strncpy in api-ms-win-crt-string-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API __acrt_iob_func in api-ms-win-crt-stdio-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API __stdio_common_vfprintf in api-ms-win-crt-stdio-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API __stdio_common_vsnprintf_s in api-ms-win-crt-stdio-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API __stdio_common_vsprintf in api-ms-win-crt-stdio-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API fflush in api-ms-win-crt-stdio-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API _callnewh in api-ms-win-crt-heap-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API calloc in api-ms-win-crt-heap-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API free in api-ms-win-crt-heap-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API malloc in api-ms-win-crt-heap-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API rand in api-ms-win-crt-utility-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API srand in api-ms-win-crt-utility-l1-1-0.dll is not supported for this application type. myDll.dll calls this API.
◦API ?InitializeData@Details@Platform@@YAJH@Z in vccorlib140.dll is not supported for this application type. myDll.dll calls this API.
◦API ?UninitializeData@Details@Platform@@YAXH@Z in vccorlib140.dll is not supported for this application type. myDll.dll calls this API.
◦API _CxxThrowException in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __CxxFrameHandler3 in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __std_exception_copy in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __std_exception_destroy in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __std_terminate in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __telemetry_main_invoke_trigger in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __telemetry_main_return_trigger in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API __vcrt_InitializeCriticalSectionEx in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API _except_handler4_common in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API _purecall in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API memcpy in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API memmove in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API memset in vcruntime140.dll is not supported for this application type. myDll.dll calls this API.
◦API ?_Xbad_alloc@std@@YAXXZ in msvcp140.dll is not supported for this application type. myDll.dll calls this API.
◦API ?_Xlength_error@std@@YAXPBD@Z in msvcp140.dll is not supported for this application type. myDll.dll calls this API.
◦API ?_Xout_of_range@std@@YAXPBD@Z in msvcp140.dll is not supported for this application type. myDll.dll calls this API.
◦API CreateEventA in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API CreateEventW in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API CreateSemaphoreA in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API GetModuleHandleW in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API InitializeCriticalSection in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API SetUnhandledExceptionFilter in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API TerminateProcess in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API TlsAlloc in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API TlsFree in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API TlsGetValue in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API TlsSetValue in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. myDll.dll calls this API.
◦API WaitForSingleObject in kernel32.dll is not supported for this application type. myDll.dll calls this API.