c++ - 如何从非托管代码执行托管代码?

标签 c++ windows dll unmanaged managed

坚持住!您可能认为这个问题已经被问过数百万次,并且回答的次数与地球绕太阳转的次数一样多,但请耐心等待我回答这个问题.

我的任务很简单:在我的 C++ (Windows) 程序中,我希望能够执行一些托管(C# 或 VB.NET 等)代码。

等等!在你按下 CTRL-T 之前,从 Google 随机抓取一个链接并在我脸上拍打它,然后说“学习搜索!”,请继续阅读:

我从这里开始http://sites.google.com/site/robertgiesecke/ 这允许我将 C# 函数导出为 C 样式函数,然后在 C++ 中使用它。它工作正常。但现在我有两个二进制文件,native exema​​naged dll

如何将dll嵌入到exe中并映射到内存中,最后从那里调用它?换句话说,我只想拥有一个包含 native exe 和托管 dll 的 exe。

当然这个我已经试过了http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
不幸的是,这不起作用,代码最后未能完成“附加”过程。我猜这是因为 dll 的托管形式。

感谢阅读。

编辑:我真的不想使用 C++/CLI :(

最佳答案

您要创建的是“混合模式”程序集。仅当您在 Visual Studio 中创建“Managed-C++”程序集/可执行文件时才能创建。

根据我多年的经验,C#/VB.NET 不支持这个。尽管我可能是错的,而且它可能只是 Visual Studio 的限制,而不是 C# 本身的限制。

关于c++ - 如何从非托管代码执行托管代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247773/

相关文章:

c++ - 类大小的字节计算

c++ - 是否有 API 或简单方法来检查 Windows Server 2012 上的卷是否已删除重复数据?

java - 通过 Java(可能还有 Linux)在 Windows 7 中启用 "Listen to this device"

c - 在另一个平台上运行一个 c 应用程序

java - 分析和检查由 Java 加载的 DLL 中的内存分配

c++ - 为什么 sgi STL 源代码在 operator new 函数前面使用双冒号?

c++ - 如何在 OpenGL 或 Win32 中获取显卡型号名称?

jquery - 滚动在 Windows Phone fullpage.js 上不起作用

c++ - 我有 VS C++ Express。有没有办法创建 .DEF 文件?

c++ - 为 gettext boost 语言环境 "Conversion failed"