c++ - 编译简单 Windows 二进制文件的最简单方法

标签 c++ c

因为我第三次失败了,也许你们中的某个人可以回答我这个(简单?)问题。

我正在寻找创建仅包含几行 C/C++(或其他任何内容)代码的 exe 二进制文件的最简单方法,并且不依赖于并非每个 Windows 系统都可用的任何 dll。因此,没有 cygwin dll,没有 .NET Redistributables,并且在 XP->Windows 10 上工作。文件大小应尽可能小。

谢谢。

最佳答案

如果我正确理解这个问题,你不太关心文件大小,而是关心不依赖第三方 DLL?然后,您始终可以静态链接库(当然,您需要将它们作为名为 lib.a 的存档可用)。例如,我使用 pdcurses 库在 Windows 版本的游戏中使用以下内容:

csnake_win32_LDFLAGS:= -static-libgcc -Wl,-Bstatic -lpdcurses \
    -Wl,-Bdynamic -lwinmm

这只是在针对 Windows 进行编译时由我的 Makefile 在链接阶段添加到 gcc 的标志中。

-static-libgcc 可能是最重要的,因为libgcc(几乎)总是需要并自动链接......默认情况下是动态链接它。

-Wl 将选项从 gcc 传递到链接器 (ld)。 -Bstatic 告诉链接器以下库应该静态链接。我在这里切换回动态链接,因为 winmm.dll 是一个 Windows 系统 dll。

关于c++ - 编译简单 Windows 二进制文件的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774489/

相关文章:

python - 将数学函数从 Python 转换为 C++

c++ - 当我将一个指针从 Fortran 传递给 C++ 时,第一个元素的值丢失了

c++ - 如何设置二进制依赖的DLL名称?

c - 在 C 中使用 float 计算模时出现问题

c - 如何生成一个在 c 中依次运行多个程序的 makefile?

c - 融合乘加和默认舍入模式

c++ - 运行时和融合序列之间的交互

转换错误 : lvalue required as left operand of assignment

c - malloc 中的 "free(): invalid next size (fast)"错误

c++ - 想要返回树节点的根,最新添加的节点完好无损