有没有办法从非托管C++创建C#对象并调用方法,但不使用COM Iterop?我正在寻找类似于JNI(但是用于.Net)的东西,您可以在其中手动创建VM,创建对象等。在不使用COM的情况下从C++调用C#方法
6
A
回答
6
如果您使用的是C++/CLI,那么您可以直接与受管理的世界和非托管代码进行交互,因此interop是微不足道的。
您也可以自己托管CLR,并且托管API是基于COM的,然后可以创建任何托管对象。这个过程并不困难,因为一些API调用封装了很多功能。网上有很多信息,例如“Hosting the Common Language Runtime”上的MSDN文档。
1
您可以在C++项目中决定是否使用托管C++ 。尝试更改项目中的设置文件,以便将其编译为托管。把这些调用放到你的C#对象中。
跨越C++/C#边界需要花费,所以你应该分析它在哪里做。就像,你不想在循环中做它。
3
从.NET类/方法导出C风格的API有一些“未公开”的方式。
这最终导致.NET dll导出了可以从C/C++调用的API或任何可以使用.DLL的API。
如果你到“阅读”(BEH),你可以得到所谓的一本书:Inside Microsoft® .NET IL Assembler在那里你会在第15章发现了这种方法:“管理方法为托管输出”
还有一个很好的例子在代码项目的项目可以作为起点为32位环境中使用: http://www.codeproject.com/KB/dotnet/DllExport.aspx
1
我的jni4net作者,JVM和CLR之间开源进程内桥。它建立在JNI和PInvoke之上。没有C/C++代码需要。我希望它能帮助你。
相关问题
- 1. 如何在不通过COM的情况下从VB6调用C++ DLL?
- 2. 在c#使用内置方法不同的情况下
- 3. 如何在不引用类的情况下调用Objective C中的+类方法?
- 4. 如何在不使用jquery的情况下从javascript调用.net页面方法?
- 5. 如何在不明确调用“actionPerformed”方法的情况下调用该方法?
- 6. 如何在C#中不使用Edmx的情况下使用DbContext?
- 7. 在不调用CreateObject的情况下使用.NET 2.0 CF中的COM对象
- 8. 如何在不使用$ scope的情况下使用apply()方法?
- 9. 在不创建对象的情况下调用类的方法
- 10. 如何在不使用showDocument的情况下从applet调用javascript?
- 11. 如何在不使用javascript的情况下从Asp.Net调用WebMethod
- 12. 在不使用系统的情况下从perl调用java类
- 13. 在不更改代码的情况下调用父类方法
- 14. 如何在不知道类名的情况下调用方法?
- 15. React.js如何在不使用引用的情况下调用子组件方法?
- 16. 在什么情况下C++析构函数不会被调用?
- 17. 如何在不调用“system()”的情况下使用C++或Qt关闭Linux?
- 18. 使用情况下对C#line指令
- 19. C++:为什么“使用”在某些情况下不起作用?
- 20. 在不使用循环的情况下更新C#中的DataTable?
- 21. 从C++ com插件调用C#
- 22. 如何在不渲染页面的情况下使用Openfaces/JSF调用方法?
- 23. 如何在不调用多个“draw()”方法的情况下使用paintComponent()?
- 24. PFQuery在不使用委托的情况下返回数据后调用方法
- 25. 在不使用Windows窗体的情况下绘制C#图形
- 26. 只有在不使用cout的情况下C++段错误
- 27. 如何在不使用类名的情况下从实例方法调用类方法
- 28. C++不能调用方法(使用模板)从模板方法
- 29. 在哪种情况下,C++/c#命名空间方法比Java方法更好?
- 30. 在不等待非异步方法的情况下调用异步方法?
正则C++或托管C++? – 2008-11-10 13:01:36