2010-04-02 140 views
1

我想执行一个exe文件,它是用VC++。net 2008编写的,在一台拥有windows xp并且没有.net框架但没有C++库的计算机上。 但是当我运行该文件,我得到这个错误:注入dll到exe文件

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

我想办法把所有的依赖一起成为自由这个问题。 有谁知道我该怎么办?

+0

你的意思是C++/CLI? – SLaks 2010-04-02 15:43:06

回答

2

如果你正在写一个纯粹的C++应用程序(仅Win32,.NET没有),那么你要staticly链接C++运行时,可以在项目属性进行更改。有关说明,请参阅this answer。 (这是为VC2005,但在VC2008中的步骤是相同的​​)

1

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

+0

我该如何设置VS2008中的项目才能从我的dll中使用,而不是从我的系统dll中使用? – JGC 2010-04-02 15:48:25

+0

如果没有第三方软件,您无法为.Net项目执行此操作。 – SLaks 2010-04-02 15:50:45

+0

我不认真使用.net我只想使用Windows功能。 你知道可以解决我的问题的其他环境吗? – JGC 2010-04-02 15:52:44

0

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

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

同样,你可以把DLL的可执行文件作为二进制资源和使用FindResourceLoadResource等,写出它的内容出来到一个临时文件 - 但是这需要一些半高级编程,它仍然施加了相当多的开销。

+0

有没有什么办法可以将我的dll放在我的可执行文件附近并能够使用它们? – JGC 2010-04-02 15:56:17

+0

@JGC:是的 - 如果你用可执行文件将它们复制到同一个目录中,系统将能够找到它们。 – 2010-04-02 17:01:29