我的意思不是“可移植”,您可以在 Linux 或其他任何东西下重新编译源代码,而是一个不需要安装的仅限 Windows 的应用程序,因此您只需放置 .exe 和一些 dll-s在一个文件夹中并将其复制到另一台机器上,它就可以工作了。
VS 2003 及更早版本根本不需要任何努力,但在 2008 中将丢失的 dll-s 放入同一文件夹不起作用,它需要安装可再发行组件。我记得听说过这个问题可以通过清单来解决,这是我以前从未遇到过的。
那么,我该怎么做呢?
我的意思不是“可移植”,您可以在 Linux 或其他任何东西下重新编译源代码,而是一个不需要安装的仅限 Windows 的应用程序,因此您只需放置 .exe 和一些 dll-s在一个文件夹中并将其复制到另一台机器上,它就可以工作了。
VS 2003 及更早版本根本不需要任何努力,但在 2008 中将丢失的 dll-s 放入同一文件夹不起作用,它需要安装可再发行组件。我记得听说过这个问题可以通过清单来解决,这是我以前从未遇到过的。
那么,我该怎么做呢?
与 CRT、MFC 和您使用的任何其他东西的静态库链接。确保您不使用在 Vista 或 Win7 中引入的 Win32 API(即,保持 WIN32_WINNT <= 0x501)。使用Dependency Walker确保您的可执行文件仅导入 kernel32、user32、gdi32 或其他保证在默认 Windows 安装中的内容。
Also look at the backward binary compatibility reports for all interested versions of Windows: https://abi-laboratory.pro/index.php?view=windows
And check if your binaries/dlls import any of the removed/changed symbols.
The reports have been generated by the abi-compliance-checker tool.
静态链接 c 运行时怎么样?不过,您生成的可执行文件会更大。