如何在另一台电脑上运行使用很少标准库的 C++ 程序?

问题描述 投票:0回答:2

我想为朋友制作一款基于文本的冒险游戏,因此所需的一切都应该放在 USB 记忆棒上。

我知道我必须将库包含到文件中,但是如何找到所需的库并将它们链接到原始游戏文件。

在我使用这些库的那一刻:

#include <iostream>
#include <string>
#include <chrono>
#include <thread>
#include <atomic>
#include <condition_variable>

我在网上找了库文件,没有找到。 找了很久也没有任何教程。

编辑:我在 Windows 上使用 gcc、Visual Studio Code

c++ mingw libraries
2个回答
1
投票

您需要在同一目录中与可执行文件一起分发一些

.dll

ntldd -R my_program.exe
将为您提供 DLL 列表。其中,忽略编译器
bin
目录中不存在的任何内容(请注意,如果 PATH 中的其他目录中有这些 DLL,则
ntldd
打印的路径可能是错误的;因此请忽略路径并仅比较文件名)。

在我的 MinGW 发行版上,这给了我

libgcc??.dll
libstdc++??.dll
libwinpthread??.dll


#include
不是“库”,请参阅iostream是标头还是库。它们与 DLL 没有一一对应的关系。

在上面的三个 DLL 中,

libstdc++
是整个 C++ 标准库,
libwinpthread
是底层使用的低级线程库
libstdc++
libgcc
包含 GCC 使用的低级实用程序,而 C 标准库主要驻留在系统提供的 DLL 中(
msvcrt.dll
ucrtbase.dll
,取决于 MinGW 风格;您不需要运送这些)。


静态链接(通过

-static
标志)也是一个选项,它将为您提供一个独立的 .exe。

但最终您会遇到带有不鼓励静态链接的许可证的库(如果您静态链接,LGPL 会强制您共享源代码),和/或构建不生成开箱即用的静态库的系统(例如 OpenAL;它使用 LGPL),所以最好不要习惯它。允许用户自己更新库也是一个好主意。


-2
投票

如果您的朋友只想运行您的游戏,您无需与您的朋友共享这些库。完成游戏后,您可以将其编译为可执行文件(例如 Windows 中的 .exe 文件),而您的朋友所要做的就是运行该可执行文件。

如果您要使用其他第三方库,那么您可能必须将它们作为 .dll 文件与可执行文件一起包含在内。然而,标准库不应该出现这种情况。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.