C++/CX 限制

标签 c++ windows-8 windows-runtime c++-cx

我想使用 C++/CX 语法编写一个库并在其他项目中使用它。

如您所知,普通的旧数据结构不能有任何方法或运算符,因此我们不得不做一些事情,例如在另一个类中编写静态方法来提供行为。

我们也不能这样写代码:

private:
    int _D;
public:
    property int& D { int& get() {return _D;}}

或将此属性传递给这样的方法:

void SampleMethod(int& d);

我不知道为什么 Windows 运行时库有这些限制。

如何在 .lib 文件中编译 C++/CX 和 Windows 运行时扩展?或者如何在另一个项目中预编译整个 WRL 项目的代码文件?

最佳答案

WinRT 是一种旨在用于跨语言使用的 ABI - 至少是 C++、C#、VB 和 JS。出于这个原因,它提供的构造仅限于可以用这些语言以直接方式表示的内容 - 例如,如果您通过引用返回,C# 代码将如何使用它?

如果您想用 C++ 编写一个仅供 C++ 使用的静态库,我的建议是尽可能避免语言扩展,并且只将它们保留在必须传递 WinRT 对象的地方。在这种情况下,完全使用 C++/CX 不会给您带来任何好处。

关于C++/CX 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387608/

相关文章:

multithreading - WinRT API 中是否有与 Android 处理程序等效的东西?

c# - Windows Phone 8.1 中的录像机应用程序

c++ - 在这种情况下如何从 vector 中删除一个项目?

c++ - Cygwin 是否支持 Gold 链接器?

visual-studio-2010 - 在 Windows 8 上的 Visual Studio 2010 中启用异步 CTP

windows-8 - 如何检测 XAML slider 何时完成?

c# - 使用 WinRT 不引发暂停事件

c++ - 在不使用定义的情况下缩短调用/名称

c++ - 赋值运算符在 C++ 中返回对 *this 的引用

要使用的 HTMl5/CSS3 框架将适用于 Windows 8 手机和 Windows 8 平板电脑以及 iPad 和网络浏览器?