如何将我的VC ++ 2008程序转换为可以在其他计算机上运行的程序。我已经尝试使用它在调试中生成的.exe但它会说我缺少一些文件并列出我所有的.cpp文件名和.h文件(如果我在其他计算机上使用它)。我想要一些东西,所以我可以加密我的文件,因为其中一个是关于加密密码/其他东西所以我不能让别人只是打开我的文件。我也非常希望能让他们接受这些条款和条件,这样如果他们失去了什么就不能起诉我,那将是非常好的。 ^^
我只有他们从他们的网站上获得的Microsoft虚拟c ++ 2008快递版。
o如果我在Windows 7上制作某些东西,它会在xp或vista中运行吗?
答案 0 :(得分:1)
您需要redist pack二进制文件才能在另一台计算机上运行(如果它尚未安装该程序包)。
答案 1 :(得分:1)
您需要制作一个生成MSI的部署项目,但我不确定您的Express版本是否会这样做。至于加密,编译不会这样做,并且没有什么能阻止人们反汇编你的代码。最后,您可能不应该编写自己的加密算法,因为大多数人在大多数时间都会遇到错误。使用开箱即用的东西。
答案 2 :(得分:1)
您通常不能并且几乎从不 将调试版本分发给客户端计算机。至少有三个原因。
operator new
之类的调试版本比你要求的更多 ,它用于运行时完整性检查等。所以你的程序运行得更胖和更多。再慢一点。更新:
要回答你的问题,如果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的情况。