我想执行一个exe文件,它是用VC++。net 2008编写的,在一台拥有windows xp并且没有.net框架但没有C++库的计算机上。 但是当我运行该文件,我得到这个错误:注入dll到exe文件
This application has failed to start because the application configuration is incorrect....
我想办法把所有的依赖一起成为自由这个问题。 有谁知道我该怎么办?
我想执行一个exe文件,它是用VC++。net 2008编写的,在一台拥有windows xp并且没有.net框架但没有C++库的计算机上。 但是当我运行该文件,我得到这个错误:注入dll到exe文件
This application has failed to start because the application configuration is incorrect....
我想办法把所有的依赖一起成为自由这个问题。 有谁知道我该怎么办?
如果你正在写一个纯粹的C++应用程序(仅Win32,.NET没有),那么你要staticly链接C++运行时,可以在项目属性进行更改。有关说明,请参阅this answer。 (这是为VC2005,但在VC2008中的步骤是相同的)
你有两个基本选择:要么用纯C++(或者其他一些可以/将会生成完全独立的可执行文件的语言)编写程序,要么使用依赖walker来查找需要的DLL,并将它们打包一个安装程序。
你所建议的(以现有的可执行文件依赖于某些DLL,并试图“注入”的DLL文件到可执行文件)选项几乎是不可行的。理论上,您可以(例如)将安装程序创建为可执行文件,并让用户每次运行程序时都要重新运行安装程序。这通常会增加用户可能不喜欢的开销。
同样,你可以把DLL的可执行文件作为二进制资源和使用FindResource
,LoadResource
等,写出它的内容出来到一个临时文件 - 但是这需要一些半高级编程,它仍然施加了相当多的开销。
有没有什么办法可以将我的dll放在我的可执行文件附近并能够使用它们? – JGC 2010-04-02 15:56:17
@JGC:是的 - 如果你用可执行文件将它们复制到同一个目录中,系统将能够找到它们。 – 2010-04-02 17:01:29
你的意思是C++/CLI? – SLaks 2010-04-02 15:43:06