繁体   English   中英

使用C#中的C ++类

[英]Use C++ class from C#

好的,所以我有这个C ++图像捕获类。 我想知道是否能得到一些帮助。.我知道基本的C ++(我对c作了一个介绍,对c ++类作了一个介绍),但我不知道该怎么做:

我需要使用此类(即在我的解决方案中创建一个新的c ++项目),并使用c#引用它并使用它来保存屏幕截图。

当我尝试添加新项目时,我不知道要选择哪个项目(win32,mfc,atl,clr,abc,xyz等)。

图像捕获类在这里: http : //pastebin.com/m72414ab

我不知道我是否需要创建.h文件,或者仅创建.cpp文件即可..坦白地说,我不知道从哪里开始笑。 我正在寻找解决方案,但是我想在此过程中学习,所以我下次不必问(更不用说我喜欢c ++,所以我将继续使用它进行编码)

在不了解有关C ++ / CLI的一些专业信息的情况下,您无法轻松地使用C#中的C ++类-在C中重写C ++类并使用P / Invoke,或者找到完整的C#解决方案。

但是我想使用这个c ++类来提高速度和内存。

我对此表示怀疑,除非您每秒捕获数千次图像,否则选择C ++是没有任何好处的,这会使您的程序更加复杂。 坚持使用C#,直到您知道需要稍微提高性能为止。

.NET 2.0及更高版本在Graphics对象上包含一个CopyFromScreen方法。 您可以创建图像,为其获取绘图表面(图形),然后从屏幕复制到图像中。

很快,Googling制作了一个简单的教程 ,使用Visual Basic .NET对此进行了演示,尽管移植到C#并不容易。

此解决方案导致您的C ++版本使用相同的GDI +调用,其好处是不必链接外部C ++代码(如上所述,这不是很简单)。

绝对可能使用来自C#的C ++构造,但这确实需要一些肮脏的技巧。 如果我没记错的话,上次尝试执行此操作时,我在C ++和C#之间使用了Managed C ++层,我认为这是最常用的方法。 这种方法效果很好,但确实不必要地复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM