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がサポートされているCOM / Win32 APIのリストのMSDNにリストされていない場合、それはWindowsPhone8でサポートされているAPIではありませんcombaseapi.h。ヘッダーのみがサポートされているようです。

_com_ptr_t<T>友達はリストに載っていません...

于 2013-01-02T18:00:40.947 に答える