【发布时间】:2012-03-04 02:27:30
【问题描述】:
坚持下去!你可能认为这个问题已经被问过数百万次了,并且已经回答了地球绕太阳旋转的次数,但请耐心等待我的回答.
我的任务很简单:在我的 C++ (Windows) 程序中,我希望能够执行一些托管(C# 或 VB.NET 等)代码。
等一下! 在你按 CTRL-T 之前,先从 Google 上随机获取一个链接,然后打我的脸,然后说“学习搜索!”,请继续阅读:
我从这里开始http://sites.google.com/site/robertgiesecke/ 这允许我将 C# 函数导出为 C 样式函数,然后在 C++ 中使用它。它工作正常。但现在我有两个二进制文件,native exe 和 managed dll。
如何将 dll 嵌入 exe 并将其映射到内存中,最后从那里调用它?换句话说,我只想拥有一个包含本机 exe 和托管 dll 的单个 exe。
当然我已经尝试过了http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
不幸的是,这不起作用,代码最终无法完成“附加”过程。我猜这是因为 dll 的托管形式。
感谢阅读。
编辑:我真的不想使用 C++/CLI :(
【问题讨论】:
-
您必须自己托管 CLR,这样您才能提供自己的 IHostAssemblyManager 和 IHostAssemblyStore 实现。也使 Giesecke hack 变得不必要。
-
这完全解决了问题:D 将其发布为答案,我会标记它。
标签: c++ windows dll unmanaged managed