Windows8 x86 metro app certification failed on PhysX dlls

Hi everyone,
I’m a newbie to physX developing. And recently got a problem on using physx in win8 x86 build metro app project. When I build the app executables in visual studio 2012, it reports a linking warning:
“LNK4098: defaultlib ‘libcmt.lib’ conflicts with use of other libs; use /NODEFAULTLIB:library”
while running the game everything seems fine except when i tried to certificate this app for shipping to the app stores, Windows Apps Certification Kit refused to approve it due to couple of fails during the test. The result looks like(I was running the certification kit in chinese environment. I tried translating it into english but can’t guarrented percisely though):

In Windows security features test,
Binary analyzer section:

C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3CharacterKinematic_x86.dll AppContainerCheck Test failed.

C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3Common_x86.dll AppContainerCheck Test failed.

C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3_x86.dll AppContainerCheck Test failed.

And in Supported Win8 style API test,
Supported APIs:

unsupported API WSACleanup within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API WSAGetLastError within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API WSASendDisconnect within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API WSAStartup within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API __WSAFDIsSet within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API accept within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API bind within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API closesocket within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API connect within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API gethostbyaddr within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API gethostbyname within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API getsockopt within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API htonl within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API htons within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API inet_addr within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API ioctlsocket within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API listen within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API recv within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API select within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API send within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API setsockopt within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.
unsupported API socket within ws2_32.dll.  This API was invoked by PhysX3Common_x86.dll.

unsupported API CreateEventA within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API CreateFileMappingA within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API CreateFileW within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API CreateThread within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API ExitProcess within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API ExitThread within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API FreeEnvironmentStringsW within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API GetACP within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
unsupported API GetCommandLineA within kernel32.dll. This API was invoked by PhysX3Common_x86.dll.
...

PhysX3CharacterKinematic_x86.dll and PhysX3_x86.dll also have a lot of similiar problems in using forbidden API from kernel32.dll like above.

I searched online and found a few people had mentioned these problems before. Some says there is a special build PhysX libraries for win8 x86 metro which nvidia did not make it downloadable for open users like me and should make a special request to get those libs.

So is there anyway to make win8 x86 app works with PhysX? or perhaps I made some mistakes in using PhysX with win8 metro app? I’m really nead a hint.

Thanks for your time.

PS. My PhysX SDK’s version is 3.2.4

Tried v3.3.1 SDK just now, wont work either. total helpless.

Hi,

There is a special build for metro apps. I’m fairly certain that the x86 build won’t work as you hoped it would because the metro environment has some specific requirements not applicable to x86. Perhaps ask on the developer program to find out how you can get access.

Thanks,

Gordon

Hi, Gordon

I rebuilt PhysX3CharacterKinematic_x86 and PhysXExtension lib in v3.3.1 SDK by tweaking several options, like switched runtime lib to multithread dll and adding WINAPI_FAMILY=WINAPI_FAMILY_APP preprocessor yesterday. And it turns out the security check and unsupported API problems caused by using of PhysX3CharacterKinematic_x86.dll are completely eliminated. But just like you mentioned above, i can’t do anything to the rest problems caused by PhysX3_x86.dll and PhysX3Common_x86.dll unless got a copy of corresponding source to rebuild those libs.

And thank for your reply, really helpful.