none
使用了PhysX v3.2.4 的Window8 x86版metro应用在WACK验证时报告失败,求解决方法 RRS feed

  • 问题

  • 大家好,最近正在开发一款win8 x86版metro direct3D的小游戏。里面使用了physx v3.2.4的SDK。

    程序Debug和Release版都运行正常,没有任何问题,打包部署到SurfacePro上面也能很好的地运行。可就是在打好包验证的时候WACK会报以下测试失败:

    Windows 安全功能测试失败 二进制分析器 •发现错误: 二进制分析器测试检测到以下错误: ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\libogg.dll 未通过 AppContainerCheck 检查。 ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\libvorbis.dll 未通过 AppContainerCheck 检查。 ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\libvorbisfile.dll 未通过 AppContainerCheck 检查。 ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3CharacterKinematic_x86.dll 未通过 AppContainerCheck 检查。 ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3Common_x86.dll 未通过 AppContainerCheck 检查。 ◦文件 C:\Program Files\WindowsApps\f4d6f24a-d61f-4ac6-b824-7ee70868290b_1.0.0.2_x86__9yaks124yr3h2\PhysX3_x86.dll 未通过 AppContainerCheck 检查。 支持的 API 测试失败 支持的 API •发现错误: 支持的 API 测试检测到以下错误: ◦此应用程序类型不支持 ws2_32.dll 中的 API WSACleanup。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API WSAGetLastError。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API WSASendDisconnect。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API WSAStartup。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API __WSAFDIsSet。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API accept。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API bind。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API closesocket。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API connect。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API gethostbyaddr。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API gethostbyname。PhysX3Common_x86.dll 调用此 API。 ◦此应用程序类型不支持 ws2_32.dll 中的 API getsockopt。PhysX3Common_x86.dll 调用此 API。 . . .

    以下还有很多类似的应用程序类型不支持 ws2_32.dll 和 kernel32.dll 中的 API XXXX的错误.全都出自PhysX的dll.

    我在工程里使用到了PhysX的dll有:

    PhysX3Common_x86.dll

    PhysX3CharacterKinematic_x86.dll

    PhysX3_x86.dll

    看起来这些physX的dll都使用了ws2_32.dll和kernel32.dll里的诸多不能给metro app用的API。

    小弟目前卡在这个问题上无法前行,恳请大神们帮忙看看这个问题怎么解决? 多谢了!

    补充一下,工程在编译的时候会报一个连接器警告:

    LNK4098: defaultlib 'libcmt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

    这个警告我试验过,就是使用了PhysX的库引起的。我在非Metro版的工程中编译就没有这个警告。貌似我手头的PhysX的x86版库不支持metro,而且nvidia官方在较新版本的SDK中也只放出了WIN8ARM的库,却没有x86版的。

    2014年6月3日 18:02

答案

  • 你好 corprus,

    不好意思回复晚了些,不过看样子似乎是你使用的库不支持Windows Store App, 我建议你可以去问一下Phys他们是否有支持Windows Store App。我这里没有办法给你具体的解答比如说如何编译这些API,你应该去问一下code owner是否有支持。

    即使有些代码可以正常运行,但如果通过不了验证或者wack的话,还是不能上架。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 corprus 2014年6月16日 13:10
    2014年6月10日 2:39
    版主

全部回复

  • 你好 corprus,

    不好意思回复晚了些,不过看样子似乎是你使用的库不支持Windows Store App, 我建议你可以去问一下Phys他们是否有支持Windows Store App。我这里没有办法给你具体的解答比如说如何编译这些API,你应该去问一下code owner是否有支持。

    即使有些代码可以正常运行,但如果通过不了验证或者wack的话,还是不能上架。

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 corprus 2014年6月16日 13:10
    2014年6月10日 2:39
    版主
  • 你好James,

    谢谢回复。

    后来在Nvidia的论坛上也问了这个问题,得到的答复你所说,nvidia确实存在一个专门为x86 win8 metro编译的PhysX库。只不过这个库目前不是对外开放下载的。有人建议和nvidia licence联系看能否申请到,但是发了邮件直到现在也没有答复。

    后来就决定暂时不适用PhysX了。目前项目先改用Bullet physics作为替代了。看看以后nvidia会不会放出x86版metro的库吧。

    2014年6月16日 13:17