1

我正在尝试将一些现有代码移植到 WP8 并遇到了问题。我要移植的代码使用在 comdef.h 中定义的智能指针,但由于某种原因,当我尝试包含 comdef.h 时,出现以下错误。

comdef.h(25):致命错误 C1083:无法打开包含文件:'olectl.h'

我了解错误的含义,并且在我的机器上的 WP8 SDK 包含路径中似乎没有“olectl.h”的痕迹。还有其他人有这个问题吗,我尝试“修复”我安装的“Visual Studio 2012 Express for Windows Phone”

我发现了一些似乎包含 comdef.h 的代码,并且通过根本不使用宏并明确使用宏将扩展为的代码,解决了本文末尾的链接所讨论的丢失宏问题。(这是我想做的代码:https ://devel.nuclex.org/framework/browser/graphics/Nuclex.Graphics.Native/trunk/Source/Rasterization/Direct3D11/Direct3D11Api.h?rev=1782 )

有没有其他人经历过这种情况,或者安装了 SDK 的人可以尝试在某处包含 comdef.h 以查看它是否适用于他们。

缺少的宏链接: http ://connect.microsoft.com/VisualStudio/feedback/details/751127/com-smartptr-typedef-causes-errors-when-used-in-winrt-build

谢谢。

4

1 回答 1

0

是的,我也看到了,所以看起来这是“设计使然”。

基本上,如果该 API 未在 MSDN 上受支持的 COM/Win32 API 列表中列出,则它不是 Windows Phone 8 上受支持的 API。看起来只combaseapi.h支持标头。

_com_ptr_t<T>它的朋友不在名单上...

于 2013-01-02T18:00:40.947 回答