将dll注入exe文件

时间:2010-04-02 15:42:09

标签: .net c++ visual-c++

我想执行一个用VC ++ .net 2008编写的exe文件,该文件有一个windows xp并且没有.net框架且没有c ++库的计算机。 但是当我运行该文件时,我收到此错误:

This application has failed to start because the application configuration is incorrect....

我想要一种方法将所有依赖关系放在一起,以摆脱这个问题。 有谁知道我该怎么办?

3 个答案:

答案 0 :(得分:2)

如果您正在编写纯C ++应用程序(仅限Win32,没有.NET),那么您希望静态链接C ++运行时,该运行时可以在项目的属性中更改。有关说明,请参阅this answer。 (适用于VC2005,但VC2008中的步骤相同)

答案 1 :(得分:1)

您似乎在寻找.Net链接器,例如this one

答案 2 :(得分:0)

您有两个基本选择:使用纯C ++编写程序(或者可以/将会产生完全独立的可执行文件的其他语言),或者使用依赖性walker来查找所需的DLL,并将它们打包成一个安装程序。

您建议的选项(采用依赖于某些DLLS的现有可执行文件,并尝试将DLL“注入”可执行文件)几乎是行不通的。理论上,您可以(例如)将安装程序创建为可执行文件,并让用户每次想要运行程序时重新运行安装程序。这通常会增加您的用户可能不喜欢的开销。

同样,您可以将DLL作为二进制资源放入可执行文件中,并使用FindResourceLoadResource等将其内容写入临时文件 - 但这需要一些半 - 先进的编程,它仍然会产生相当大的开销。