如何从非托pipe代码执行托pipe代码?

如何从非托pipe代码执行托pipe代码?,第1张

概述如何从非托pipe代码执行托pipe代码?

把它放在那里! 你可能会认为这已经被数百万次的问题所回答了,尽pipe地球在太阳附近旋转的时间已经被回答了很多次了,但是在这个问题上请耐心等待。

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

等待! 在你使用CTRL-T之前,先从Google上随便找一个链接,把它放在我的脸上,然后说“Learn to search!”,请继续阅读:

我从这里开始http://sites.Google.com/site/robertgIEsecke/ ,它允许我将C#函数作为C风格函数导出,然后在C ++中使用它。 它工作正常。 但现在我有两个二进制文件,本机exe文件和托pipe的dll 。

我如何将DLLembedded到EXE中,并将其映射到内存中,最后从那里调用它? 换句话说,我想只有一个同时包含本机exe和受pipedll的exe文件。

当然,我已经试过这个http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/


不幸的是,这不起作用,代码没有完成最后的“附加”过程。 我猜这是因为该DLL的托pipeforms。

谢谢阅读。

编辑:我真的不想用C ++ / Cli的所有手段:(

你要创建的是一个“混合模式”程序集。 只有在Visual Studio中创建“Managed-C ++”程序集/可执行文件时,才能创建该文件。

从我多年的经验来看,C#/ VB.NET不支持这一点。 虽然我可能是错的,它可能只是一个Visual Studio的限制,而不是C#本身。

由于安全问题,您在这里尝试的东西并不真正被支持。 本质上,你试图执行自己的数据块(甚至可能会标记为nx(不执行))。过去,我尝试了类似的方法(对于DRM原因,只是在“避免反编译器”) – 我不是限制性DRM风扇),这是可能的,但它是一个PITA使用和错误倾向取决于目标机器的安全设置,如果可能的话,不惜一切代价避免。

博客上的代码本质上是使用正确的方法,但是这个代码只能用于非托管的库(正如你已经注意到的那样)。 这只是由于托管库和可执行文件的构建方式(基本上只有一个小的本地存根,用于启动运行时环境的可执行文件;但是没有库(因此没有本地入口点;这将是该方法所需的)) 。

总结

以上是内存溢出为你收集整理的如何从非托pipe代码执行托pipe代码?全部内容,希望文章能够帮你解决如何从非托pipe代码执行托pipe代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1288044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存