我想使用 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/