在为.NET提供一个体面的embedded式框架(CEF)的领域,两个领先的select似乎是CefSharp和CefGlue。 它们在方法上有所不同(CefGlue使用P / Invoke调用CEF非托pipe代码,CefSharp使用CEF库的混合模式C ++ / CLI包装器)。 混合模式程序集比P / Invoke调用更好吗? 所有其他的事情都是平等的,看起来CefGlue(P / Invoke库)为CEF项目提供了一个“更薄”的包装,这意味着它可能更快地响应上游库中的更新。 这两个图书馆的经验是否可以分享哪些差异化因素?
我有这样的代码: std::string st = "SomeText"; … std::cout << st; 这工作得很好。 但是现在我的团队想要转移 所以我试了一下: std::wstring st = "SomeText"; … std::cout << st; 但是这给了我一个编译错误: 错误1错误C2664:'std :: basic_string <_Elem,_Traits,_Ax> :: basic_string(const std :: basic_string <_Elem,_Traits,_Ax>&)':不能将参数1从'const char [8]'转换为'const std :: basic_string <_Elem,_Traits,_Ax>&'D:… \ TestModule1.cpp 28 1 TestModule1 在search网页后,我读到应该将其定义为: std::wstring st = L"SomeText"; // Notice the "L" … std::cout << st; […]
我偶然发现了这些代码,我很自豪地去问作者这是什么意思。 Hashtable^ tempHash = gcnew Hashtable(iterators_); IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator(); gcnew是什么,使用它而不是简单的new东西有多重要? (我也被这个脱口而出,我在这里问了一下 。)
我对C ++非常熟悉,所以我考虑学习.NET及其所有派生(尤其是C#)。 一路上我碰到了C ++ / CLI,我想知道这个语言是否有特定用途? 它只是假设成为从本地C ++转换到C#的中间语言? 另外一个问题就是为什么.NET框架中还有这么多的编程语言? (VB,C ++ / CLI,C#…)
我正在从事一个项目,主要从ac#应用程序中使用c ++ / cli库。 有没有什么办法使c ++ / cli中的代码注释可视化到Visual Studio中的c#intellisence? 假设没有,最好的方式来logging的c + + / cli代码,以使其更容易从c#中使用(当然在c + + / cli当然)? 你对XML评论和doxygen vs其他工具(哪些)有什么看法?
我有一个函数将一个stringparsing为两个string。 在C#中,我会声明这样的: void ParseQuery(string toParse, out string search, out string sort) { … } 我会这样称呼它: string searchOutput, sortOutput; ParseQuery(userInput, out searchOutput, out sortOutput); 当前的项目必须在C ++ / CLI中完成。 我试过了 using System::Runtime::InteropServices; … void ParseQuery(String ^ toParse, [Out] String^ search, [Out] String^ sort) { … } 但是如果我这样称呼它: String ^ searchOutput, ^ sortOutput; ParseQuery(userInput, [Out] searchOutput, [Out] sortOutput); […]
在C#和C ++ / CLI中,使用关键字sealed (或VB中的NotInheritable )来保护类不受任何inheritance机会(该类将是不可inheritance的)。 我知道面向对象编程的一个特点是inheritance,我觉得使用sealed是违背这个特性的,它会停止inheritance。 有没有一个例子显示sealed的好处,什么时候使用它是重要的?
当我从C#项目中使用它的时候,我做了一个NuGet包。 它包含lib/net40目录中的一个DLL,并将该DLL作为参考添加。 既然NuGet支持C ++,那么我怎样才能真正修改我的包,以便可以在C ++ / CLI项目中将该DLL添加为托pipe引用? 我找不到解释这个的任何教程。 如果我尝试只是添加包,我得到以下错误: 您正在尝试将此软件包安装到以“Native,Version = v0.0”为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件。 有人会认为解决scheme是把文件放在lib / native下,但根据http://docs.nuget.org/docs/reference/support-for-native-projects ,这是不支持的。 另外,简单地将DLL直接放在lib下,似乎没有任何作用。 显然,我应该用build / native下的.props或.targets文件来做到这一点,但是我需要将这些文件放到这些文件中才能使其工作?
Visual Studio IntelliSense for VC ++包含“完整的” EDG C ++parsing器 (也被英特尔等使用)。 由于C#代码DOM是可以插入的(纠正我,如果我错了),C ++代码DOM也可访问? 这可以用来分析VS环境中的一个开放的VC ++项目吗?
由于我将项目升级到Visual Studio 2010项目格式,因此我的C ++ / CLI项目针对.net framework 4.0。 将框架版本从C#项目切换到另一个版本是很容易的,但我不知道如何在C ++ / CLI项目中做到这一点,我没有在项目属性页面中看到这个设置。