Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2013 C++/CX头文件可以';找不到Microsoft命名空间_Visual Studio 2013_Directx 11_C++ Cx - Fatal编程技术网

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知道它在构建时起作用,但在此之前可能不会起作用

WinRT APIs:C++是传统的C++,不使用C++/CX语言扩展。< /强>它们都是为了使C++更容易从C++中消费,并且你会看到在使用非C++/CX应用程序时处理Cux/Cx应用程序时使用的<代码>::您可以在同一个应用程序中混合使用C++/CX和WRL,这是因为您可以在C++/CX ref^和ABI COM指针之间使用
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知道它在构建时起作用,但在此之前可能不会起作用

WinRT APIs:C++是传统的C++,不使用C++/CX语言扩展。< /强>它们都是为了使C++更容易从C++中消费,并且你会看到在使用非C++/CX应用程序时处理Cux/Cx应用程序时使用的<代码>::您可以在同一个应用程序中混合使用C++/CX和WRL,这是因为您可以在C++/CX ref^和ABI COM指针之间使用
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。