Visual studio 2013 C++/CX头文件可以';找不到Microsoft命名空间
我有一个带有以下代码的头文件:Visual studio 2013 C++/CX头文件可以';找不到Microsoft命名空间,visual-studio-2013,directx-11,c++-cx,Visual Studio 2013,Directx 11,C++ Cx,我有一个带有以下代码的头文件: Microsoft::WRL:ComPtr<ID3D11Device2> m_device; Microsoft::WRL:comptrm_设备; 在类定义中。VisualStudio2013说微软不是一个名称空间,如果我把代码删掉,放在另一个文件的另一个类中,保持不变,它就可以正常工作了 有什么想法吗 菲利浦 编辑:Intelissense现在突然(我没有做任何更改)接受Microsoft::WRL::ComPtry为有效,但当我编译时,它仍
Microsoft::WRL:ComPtr<ID3D11Device2> m_device;
Microsoft::WRL:comptrm_设备;
在类定义中。VisualStudio2013说微软不是一个名称空间,如果我把代码删掉,放在另一个文件的另一个类中,保持不变,它就可以正常工作了
有什么想法吗
菲利浦
编辑:Intelissense现在突然(我没有做任何更改)接受Microsoft::WRL::ComPtry为有效,但当我编译时,它仍然会给我错误,说明它不存在。您需要
#include <wrl.h>
如果您刚刚将#include
添加到Test.cpp,Intellisense可能还不知道它是否在标头的范围内。它已经是完全有效的C++了,但是更好的做法是在你的头中包含它所需要的:
//Test.h
#pragma once
#include <wrl/client.h>
class A { Microsoft::WRL::ComPtr<T> a; };
//Test.h
#布拉格语一次
#包括
A类{Microsoft::WRL::ComPtr A;};
此同步问题的另一种表现方式是:
//Test.h
class A { Microsoft::WRL::ComPtr<T> a; };
//Test.cpp
#include "pch.h"
#include "Test.h"
//pch.h
#include <wrl/client.h>
//Test.h
A类{Microsoft::WRL::ComPtr A;};
//Test.cpp
#包括“pch.h”
#包括“Test.h”
//pch.h
#包括
再次,完全有效的C++将生成。Intellisense知道它在构建时起作用,但在此之前可能不会起作用
reinterpret_cast
。您也可以在Windows 7或Windows Vista上的老式Windows桌面应用程序中使用Microsoft::WRL::ComPtr
综上所述,WRL和C++/CX是两个截然不同的东西
<强> Update:对于Windows运行时API,您还可以使用C++ + WINRT,这也是“标准”C++,不需要任何C++和CX扩展。看见您可以对C++/WinRT应用程序使用
Microsoft::WRL::ComPtr
,也可以使用其变体WRL::com\u ptr
,您需要
#include <wrl.h>
如果您刚刚将#include
添加到Test.cpp,Intellisense可能还不知道它是否在标头的范围内。它已经是完全有效的C++了,但是更好的做法是在你的头中包含它所需要的:
//Test.h
#pragma once
#include <wrl/client.h>
class A { Microsoft::WRL::ComPtr<T> a; };
//Test.h
#布拉格语一次
#包括
A类{Microsoft::WRL::ComPtr A;};
此同步问题的另一种表现方式是:
//Test.h
class A { Microsoft::WRL::ComPtr<T> a; };
//Test.cpp
#include "pch.h"
#include "Test.h"
//pch.h
#include <wrl/client.h>
//Test.h
A类{Microsoft::WRL::ComPtr A;};
//Test.cpp
#包括“pch.h”
#包括“Test.h”
//pch.h
#包括
再次,完全有效的C++将生成。Intellisense知道它在构建时起作用,但在此之前可能不会起作用
reinterpret_cast
。您也可以在Windows 7或Windows Vista上的老式Windows桌面应用程序中使用Microsoft::WRL::ComPtr
综上所述,WRL和C++/CX是两个截然不同的东西
<强> Update:对于Windows运行时API,您还可以使用C++ + WINRT,这也是“标准”C++,不需要任何C++和CX扩展。看见您可以对C++/WinRT应用程序使用
Microsoft::WRL::ComPtr
,也可以使用其变体WRL::com_ptr
是否包括client.h
以让编译器知道ComPtr
类型和命名空间?可能其他文件已经包含它或包含它的内容。名为client.h的文件不会显示在自动完成中。另外,我粘贴测试的另一个文件不包含任何其他内容,它可以工作……使用C++/CX的意义在于,您不必回到伏都教较低的层,即龙居住的层。您可以使用#include
调用dragon,以便编译器可以查看名称空间和类型。这有助于找到c:\Program Files(x86)\Windows Kits\8.1\Include\winrt\wrl\client.h(如果阳光明媚)。是否包括client.h
,让编译器了解ComPtr
类型和命名空间?可能其他文件已经包含它或包含它的内容。名为client.h的文件不会显示在自动完成中。另外,我粘贴测试的另一个文件不包含任何其他内容,它可以工作……使用C++/CX的意义在于,您不必回到伏都教较低的层,即龙居住的层。您可以使用#include
调用dragon,以便编译器可以查看名称空间和类型。这有助于它在阳光明媚时查找c:\Program Files(x86)\Windows Kits\8.1\Include\winrt\wrl\client.h。