我是个普通的.NET开发人员,旨在为C ++库集成到一个.NET项目。 我有一些想法,但因为我一般是新的C ++,我不知道的技术我想与之合作的限制。 C ++的项目本质上是一个快速的声音渲染,可以播放与一群不同的后处理技巧的多轨音频文件。 所有这一切都很酷,但考虑到我有一个简单的.NET WinForms应用程序我想与整合,事情开始显得凌乱。
首先,C ++项目没有.NET绑定或ActiveX / COM集成。 其纯“醇MS VC ++ 9项目。 如果我在我的.net应用程序与项目合作我会以某种方式为界面 ,即。 创建类实例,一组属性,调用方法,在编组数据进出等
其次,它的建成为一个独立的Windows应用程序运行和管理使用微软Windows API自己的Windows。 这是好的,但不知何故,我需要的.NET VM在后台运行 ,管理和展示运行我所有的C#代码。 我不写C ++,所以我需要用C#,坚持围绕打造这个LIB的应用程序。
第三,无论我是在同一个进程中C ++ lib或不运行,我需要一种方法来建立/接口/调试这2个独立的应用程序,就好像它们是一个。 我除了事实上,我已经写了几个C ++的高性能数据处理的DLL在C ++编程的背景。
所以,许多问题和不知道如何开始!
我完全可以编译此lib和它进入一个VC EXE,但我怎么共同编译我的.NET代码成吗? 或替代,我怎么编译C ++代码到.NET EXE所以它的托管环境中运行? 请注意,它不是为这一点,如果我试图改变太多可能无法正常运作。
主要的问题是它的接口 。 如何暴露从.NET访问一些C ++类? 我知道我需要到底是哪班,我就只需要与他们相关的方法/属性沿着几十类可从.NET。 我不介意手写包装类在.NET帮助.NET VM了解来回传输字节的阶级结构。 我希望我可以用C ++对象从托管环境中工作直接所以大部分我的代码可以留在.NET。
即使我运行它作为一个独立的应用程序,我将不得不诉诸插座或东西与它沟通? 这是绝对的最坏的情况下,我会尽一切努力避免这一点。
任何帮助或指针赞赏,我希望我自己和我的手边清楚的任务,而我的问题是不够具体和交代。 谢谢你的帮助!
编辑:如果我写的包装类或生成它们,我可以使用的P / Invoke ,以在其上创建类的实例,并调用方法,并让他们在后台运行原生C ++代码? 哪里就会为这样的C ++对象的内存来存储和管理? 在该.NET堆或外面呢?