标签: managed-c++

什么是与C#using语句等效的托管C++

如何在Managed C++中编写以下C#代码

void Foo()
{
    using (SqlConnection con = new SqlConnection("connectionStringGoesHere"))
    {
         //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

Clarificaton: 对于托管对象.

.net managed-c++ using-statement

21
推荐指数
1
解决办法
2万
查看次数

如何在Managed C++中处理IDisposable

我正在尝试在托管C++(.Net 2.0)中处理IDisposable对象(FileStream ^ fs)并收到错误

'Dispose' : is not a member of 'System::IO::FileStream'
Run Code Online (Sandbox Code Playgroud)

它说我应该调用析构函数.会打电话

fs->~FileStream();
Run Code Online (Sandbox Code Playgroud)

在FileStream对象上调用dispose方法?为什么我不能调用Dispose?

.net managed-c++ idisposable

19
推荐指数
1
解决办法
4535
查看次数

.NET在数值计算中的速度

根据我的经验,.NET比本机代码慢2到3倍.(我实施了L-BFGS进行多变量优化).

我已经在stackoverflow上跟踪广告到 http://www.centerspace.net/products/

速度真的很惊人,速度接近原生代码.他们怎么能这样做?他们说:

问:NMath是"纯粹的".NET吗?

答:答案在某种程度上取决于您对"纯.NET"的定义.NMath是用C#编写的,加上一个小的Managed C++层.但是,为了更好地执行基本线性代数运算,NMath确实依赖于本机Intel Math Kernel Library(包含在NMath中).但是没有COM组件,没有DLL - 只是.NET程序集.此外,在托管C++层中分配并由本机代码使用的所有内存都从托管堆中分配.

有人可以向我解释一下吗?

.net c# managed-c++ managed-code nmath

18
推荐指数
4
解决办法
6317
查看次数

为什么在c ++类定义中公共引用

首先,我想说清楚一点都是C++的新手,所以这可能是一个简单而且有点明显的问题.在我正在阅读的C++书中,我称之为C++ Primer,一个类是通过编写来定义的:

class classname{
public:

private:

};
Run Code Online (Sandbox Code Playgroud)

但是,在VS2008中,编译器并不喜欢这样.但是在课前添加公共引用,如:

public ref class classname{
Run Code Online (Sandbox Code Playgroud)

它在编译器中经历了.任何人都可以解释只定义类和公共ref类之间的区别是什么?我真的很感激.

managed-c++ c++-cli visual-c++

15
推荐指数
2
解决办法
2万
查看次数

如何在没有大内存分配的情况下显示快速更新的图像?

我在超声波机器上有一个WPF应用程序,它以超过每秒30帧的速度显示用C++生成的超声图像.

据我所知,在WPF中显示图像的正常过程是为您的图像创建一个BitmapSource,并为您的图像设置Source,然后使其无效并显示.

由于BitmapSources没有实现IDisposable,使用这种方法迫使我每秒创建30个BitmapSources.对于具有32bppArgb格式的640x480图像,这是每秒分配大约30MB /秒的内存,然后每10秒进行一次垃圾处理,导致可见的延迟.显然不是一个可以接受的解决方案.

我目前的解决方案是:

在C++中:我在托管C++中创建一个System.Drawing.Bitmap(WinForms位图),从指针填充图片做一个memcpy,使用Graphics对象做我需要的一些额外的绘图,并将其传递给C#/ WPF在ImageReceived事件期间.

在C#中, Image.Source被设置为BitmapBuffer生成的源,这是一种访问位图源的原始数据的黑客方式:请参阅此链接.我做了一个CopyMemory的P/Invoke来将数据从Bitmap.Scan0复制到BitmapBuffer中.然后我使Image无效以更新屏幕,然后Dispose()Drawing.Bitmap对象释放内存.

虽然这种方法已经工作了一段时间,但它看起来非常糟糕,我发现很难相信没有其他"适当"的方法可以做到这一点,而不是通过反思.

问题:有更好的方法吗?

c# wpf managed-c++ image-processing

13
推荐指数
2
解决办法
7469
查看次数

如何在托管C++中检查"NULL对象引用"?

我遇到了一些像这样的MC++代码:

__gc class ClassA
{
Puclic:
     ClassB GetClassB();
}

__gc class ClassB
{
 Public:
    int Value;
}

int main()
{
    ClassA^ a = gcnew ClassA();
    ClassB^ b = a->GetClassB();

    int c = b->Value;
}
Run Code Online (Sandbox Code Playgroud)

在访问其值之前检查b是否为NULL不重要吗?我试过了if(b == NULL),但它不起作用.

或者它真的没有必要进行检查?但我简直不敢相信......

PS:我只想知道"参考"本身在这里是否为NULL.B类的内容是否为空并不重要.

managed-c++ c++-cli object-reference visual-c++

13
推荐指数
1
解决办法
2万
查看次数

P/Invoke和C++ Wrappers之间的性能差异

在学习P/Invoke的过程中,我问过上一个问题:

如何在涉及指针时进行P/Invoke

但是,我不太明白在C#中使用P/Invoke而不是在托管C++中创建包装器的含义.在C#中使用P/Invoke创建相同的DLL肯定会导致更清晰的接口,因为我可以在嵌入式资源上使用DLLImport,但是我自己编组的本机DLL的托管C++包装器会有更好的性能吗?

c# performance pinvoke managed-c++

12
推荐指数
2
解决办法
8427
查看次数

我应该为我的应用程序使用Managed C++或C#吗?

如果您必须在C#和托管C++之间做出决定,您会选择哪个以及为什么?

托管C++相对于C#有什么好处?你更喜欢哪种语言?在什么情况下你会做出什么决定?

.net c# managed-c++ c++-cli managed

11
推荐指数
2
解决办法
3955
查看次数

什么是回调?它是什么以及如何在例如C++中实现它

我意识到这是一个新手问题,但是当我正在努力学习C++时,我经常对这个表达式"回调"感到困惑.我用Google搜索并检查了维基百科,但没有找到一个好的探索.我熟悉一些Java和C#,但听起来不太可能,我从来没有真正理解回调意味着什么.

如果有人知道如何向一个简单的外行解释这个术语,我会非常感激.

c++ managed-c++ callback

10
推荐指数
2
解决办法
4924
查看次数

WPF应用程序应该用C++/CLI还是C#编写?

WPF应用程序的核心是托管应用程序? 对? 因此,我必须在使用托管C++或托管C#之间进行选择.几年前我用托管C++进行过实验.它似乎还没有为黄金时段做好准备.我猜测微软在托管C#方面付出了更多努力,而不是托管C++.因此,似乎使用托管C#是两者之间的最佳选择.是这样的吗?您使用任何一种语言都可以获得WPF的经验吗?提前致谢.

c# wpf managed-c++ c++-cli managed-code

10
推荐指数
1
解决办法
2816
查看次数