微软最近发布了新的Phone 7平台的工具和文档,让那些拥有大型C++代码库的人(比如我)感到沮丧,不再支持本机开发了.虽然我发现有关这一决定被推翻的猜测,但我对此表示怀疑.所以我想通过调整它在C++/CLI下进行编译来使Phone 7可用的代码库是多么可行.当然用户界面部件无法移植,但我不确定其余部分.有人有类似的经历吗?我不是在谈论那些做重度低级的东西的代码 - 但是经常使用模板和智能指针.
我有以下代码,我认为它可以工作:
property Nullable<double> Angle {
Nullable<double> get() {
return nullptr;
}
}
Run Code Online (Sandbox Code Playgroud)
它没有.我该怎么做?c ++/CLI甚至支持可空类型吗?
Visual Studio语法突出显示该单词为蓝色,就像它是关键字或保留字一样.我试着在网上搜索它但是"数组"这个词引发了搜索,我得到的主要是解释数组是什么的页面.它是干什么用的?
假设我有一个名为C#的接口IMyInterface定义如下:
// C# code
public interface IMyInterface
{
void Foo(string value);
string MyProperty { get; }
}
Run Code Online (Sandbox Code Playgroud)
假设我还有一个C++/CLI类MyConcreteClass,它实现了这个接口,其头部声明如下:
// C++/CLI header file
ref class MyConcreteClass : IMyInterface
{
public:
};
Run Code Online (Sandbox Code Playgroud)
如何在C++/CLI头中实现方法Foo和属性MyProperty?
我的尝试导致以下编译错误:
错误C3766:'MyConcreteClass'必须为接口方法提供一个实现'void IMyInterface :: Foo(System :: String ^ value)'
具有中等大小(40多个函数)的C API,需要从C#项目调用.这些函数在逻辑上分解,形成一些类,这些类将呈现给项目的其余部分.
在稳健性,可维护性,部署......方面,是否有任何客观理由倾向于使用P/Invoke或C++/CLI来实现该API下的互操作性?
我能想到的问题可能是,但没有问题的是:
我不确定的问题是:
还要别的吗?
"旧"托管C++与"新"C++/CLI之间究竟有什么区别?
标题解释.我有原生的C++ dll,我正在编写C++/CLI包装器,而这些包装器又将作为参考在C#中导入.
问题是在C#中我没有看到我在包装器中的类(从DLL导入).
我应该使用哪些关键字以及如何重新声明我的本机C++对象在C#中可见?
Mono .NET是否支持并编译C++/CLI?
如果没有,你知道他们是否有任何支持它的计划?
只是想知道是否有办法在C++/CLI中使用LINQ.我找到了一篇专注于VS 2008的帖子,需要为System :: String类提供一些解决方法.我在CodeProject上看到了一些框架替换,但我想知道是否有一种方法可以直接在C++/CLI中使用它.如果可以,任何人都有一个好榜样?
我知道C++/CLI代码
void foo(Bar^% x);
Run Code Online (Sandbox Code Playgroud)
变成了
Void foo(ref Bar x);
Run Code Online (Sandbox Code Playgroud)
什么是C++/CLI代码
Void foo(out Bar x);
Run Code Online (Sandbox Code Playgroud)
?