如何将我的程序变成我可以安装的东西?

时间:2010-02-04 19:22:42

标签: c++ visual-c++

如何将我的VC ++ 2008程序转换为可以在其他计算机上运行的程序。我已经尝试使用它在调试中生成的.exe但它会说我缺少一些文件并列出我所有的.cpp文件名和.h文件(如果我在其他计算机上使用它)。我想要一些东西,所以我可以加密我的文件,因为其中一个是关于加密密码/其他东西所以我不能让别人只是打开我的文件。我也非常希望能让他们接受这些条款和条件,这样如果他们失去了什么就不能起诉我,那将是非常好的。 ^^

我只有他们从他们的网站上获得的Microsoft虚拟c ++ 2008快递版。

o如果我在Windows 7上制作某些东西,它会在xp或vista中运行吗?

5 个答案:

答案 0 :(得分:1)

您需要redist pack二进制文件才能在另一台计算机上运行(如果它尚未安装该程序包)。

答案 1 :(得分:1)

您需要制作一个生成MSI的部署项目,但我不确定您的Express版本是否会这样做。至于加密,编译不会这样做,并且没有什么能阻止人们反汇编你的代码。最后,您可能不应该编写自己的加密算法,因为大多数人在大多数时间都会遇到错误。使用开箱即用的东西。

答案 2 :(得分:1)

您通常不能并且几乎从不 将调试版本分发给客户端计算机。至少有三个原因。

  1. 客户端计算机不具有依赖库的调试版本,例如VC运行时(msvcrtd.dll),因此它们将无法运行您的应用程序。
  2. 在调试中进行编译时,您的代码将以多种方式运行未经优化。首先,在调试中编译时不要让优化编译器优化,因此它会运行得更慢和/或更胖。另一方面,有operator new之类的调试版本比你要求的更多 ,它用于运行时完整性检查等。所以你的程序运行得更胖和更多。再慢一点。
  3. 在调试中编译时,对代码进行反向工程更容易。
  4. 更新:

    要回答你的问题,如果Win7编译的应用程序将在XP / Vista上运行,只要你不使用任何Win7功能,答案就是'是'。

答案 3 :(得分:0)

如果您在Win 7中使用.NET 3.5进行编译,它也应该在xp和vista中工作 (如果安装了.NET 3.5框架)。

答案 4 :(得分:0)

第一部分已经回答(发布版本,包括可再发行的C ++ DLL)。

第二部分,在Vista / XP上运行并不是那么简单。

如果您编写纯C ++程序,它将无条件地在XP和Vista上运行。但是,一旦包含<windows.h>,就会引入对最低Windows版本的依赖性。今天的默认值仍然是XP。这意味着您无法直接使用任何Vista或W7功能,因此您的程序可以在XP上运行。

但是,如果您在#define WINVER 0x0600之前<windows.h>,那么您可以使用特定于Vista的功能。您使用使用这些Vista功能所支付的价格是您的程序将不再在XP上启动。同样,#define WINVER 0x0601还允许您在XP和Vista功能之上访问Windows 7功能。而且,使用Windows 7功能可以阻止您在XP或Vista上运行。

有一些技巧允许您使用Windows 7功能(如果可用)。基本上,它们都归结为调用GetProcAddress("some_windows7_function")并以某种方式处理它返回NULL的情况。