有没有一种方法可以从C++非托管应用程序调用c#dll而不使用COM?从没有COM的非托管C++应用程序调用C#dll
回答
你唯一的选择的确是使用C++ .net或为它创建一个C++ .net包装器,用于导出你需要的东西。
实际上可以反汇编,修改IL,然后用导出的函数重组它。几年前我就搞砸了,创建了一个可以反汇编DLL的应用程序,提供可能导出的函数列表 - 允许用户选择它们,然后重写IL并重新组合所有内容。然后,我可以直接从非托管代码调用dll ...或者从托管代码中调用dll(不太实际,但很有趣)。
毫无疑问,这是在.net语言本身不支持的原因(即使是MSIL支持它也是如此)。有点晚
http://www.csharphelp.com/2007/03/exporting-managed-code-as-unmanaged/
它在C++/CLI中受支持,当您__declspec(dllexport)静态C++/CLI函数时,它会自动创建一个将加载CLR的thunk。当然,这是大伎俩,不能在不加载CLR的情况下运行托管代码。 – 2010-12-16 22:29:35
@Hans当您将输出添加到IL时,ILASM将完成您的程序集所需的所有操作,就好像它是本机程序一样。 – 2011-01-05 15:02:14
我可能是,但检查出this:我不会在生产中使用这个。
使用这个小小的msbuild任务,您可以创建一个C#库,该库可以像调用本机DLL一样调用。 (例如,为需要它们为本地dll的应用程序编写插件)
哦,不要忘记使用project template,它会为您设置所有内容。
- 1. 从C#调用非托管C++类DLL#
- 2. 从非托管C++创建COM DLL LIB
- 3. 有没有办法从C#应用程序调用非托管(而不是COM)dll?
- 4. C#托管的dll调用或非托管的dll调用?
- 5. 从C调用非托管dll困难#
- 6. 实现一个C#DLL COM文件在非托管C++程序
- 7. 如何将数据从非托管应用程序传递到C#COM DLL
- 8. 从C#应用程序中的非托管DLL导入函数
- 9. 从C调用托管C#COM对象#
- 10. 如何从托管C++调用非托管DLL
- 11. 从C#WPF应用程序调用非托管Windows DLL时出错
- 12. 从C调用非托管C++ COM对象#
- 13. 从托管C#应用程序中调用非托管代码的缺点
- 14. 从C#.exe调用非托管C++ .dll的函数
- 15. 从C#.NET调用非托管DLL所需的教程
- 16. 在非托管C++ dll中使用托管c#dll
- 17. 从非托管C Dll加载托管C++ Dll?
- 18. 从SQL Server 2008调用非托管C/C++ DLL函数
- 19. 从C#windows服务调用C++ dll(非托管代码)
- 20. 从C#调用非托管C++ VS 6.0 MFC dll
- 21. 从C调用非托管C++#
- 22. 从C#应用程序调用C++ DLL
- 23. C#应用程序与非托管DLL冻结整个系统
- 24. Assembly :: LoadFrom从托管C++调用dll
- 25. 如何从C#应用程序调用COM-DLL?
- 26. 几个应用程序域调用相同的非托管dll
- 27. 与非托管C++一起使用COM dll
- 28. 从非托管C++调用托管c#功能
- 29. 如何从托管C++ exe调用非托管C++ exe
- 30. 卡住调用从非托管C++调用托管CLI方法
您可以随时[embed Mono](http://www.mono-project.com/Embedding_Mono)... – cdhowie 2010-12-16 21:46:54
可以通过混合模式DLL完成。 – 2010-12-16 22:28:30
[Calling C#code from C++]可能的重复(http://stackoverflow.com/questions/778590/calling-c-sharp-code-from-c) – cdiggins 2014-04-20 13:10:43