Windows商店认证工具包 - c ++库验证问题

时间:2016-05-09 08:07:19

标签: c++ windows-store-apps app-certification-kit

我试图将c ++库移植到Windows商店应用的通用窗口。 在Windows 10上的visual studio 2015 v14.0.24720.00 update 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]*

获取大量不寻常的wack验证错误,这些错误肯定应该是标准函数,例如malloc和std :: bad_alloc等。 此外,许多这些不受支持的API似乎实际存在于白名单文件中,即使声明它们不受支持。 不知道我做错了什么,因为它与/ ZW / EHsc / D" WINAPI_FAMILY = 2"这里记录的开关https://msdn.microsoft.com/en-us/library/hh700130.aspx

该页面上的文档明确指出,在使用/ ZW标志时,任何使用Windows 8.x Store应用程序中不允许的CRT函数都会导致编译时错误。这一切都很好,甚至在手臂工具链上。

同样令人费解的是为什么有些引用是在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.

1 个答案:

答案 0 :(得分:0)

答案是我需要针对Windows 8.1库而不是vs2015构建vs2013工具链。不要忘记检查应用程序依赖项中对通用c ++运行时的依赖性,否则将无法加载dll。

在C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC中使用vcvars.bat

编译器:

cl / nologo /FoBuild\Obj\Windows\Release\MyObj.obj -c / MD / Ox / c / W4 / EHsc / FRBuild \ Obj \ Windows \ Release \ -DDEFINE_LITTLE_ENDIAN -DDEFINE_TRACE -DDEFINE_WINDOWS_UNIVERSAL -D_CRT_SECURE_NO_WARNINGS / D& #34; _WINDLL" / D" _UNICODE" / D" UNICODE" / FU" C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.1 \ ExtensionSDKs \ Microsoft.VCLibs \ 12.0 \ References \ CommonConfiguration \ neutral \ platform.winmd" / FU" C:\ Program Files(x86)\ Windows Kits \ 8.1 \ References \ CommonConfiguration \ Neutral \ Windows.winmd" / FU" C:\ Program Files(x86)\ Windows Kits \ 8.1 \ References \ CommonConfiguration \ Neutral \ Windows.winmd" / WX / ZW / ZW:nostdlib / D" WINAPI_FAMILY = WINAPI_FAMILY_APP" / D" WRL_NO_DEFAULT_LIB " / Gy / Zc:inline / Zc:wchar_t / TP -IBuild \ Include MySrc.cpp

链接:

link / nologo / OPT:REF / map Ws2_32.lib kernel32.lib / APPCONTAINER / DYNAMICBASE / NXCOMPAT / MACHINE:X86 / SUBSYSTEM:WINDOWS / LIBPATH:" C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ lib \ store" / dll /out:Build\Obj\Windows\Release\myDll.dll [Build \ Obj \ Windows \ Release * .obj]

另见:

https://social.msdn.microsoft.com/Forums/en-US/b4d0ca1a-6b35-49e2-9074-886cc36f80d4/uwpc-store-apps-compiling-c-library-on-command-line-causes-rejections?forum=wpdevelop

https://blogs.msdn.microsoft.com/vcblog/2012/09/28/c-runtime-for-windows-8-store-apps/

干杯 伊恩