我想为朋友制作一款基于文本的冒险游戏,因此所需的一切都应该放在 USB 记忆棒上。
我知道我必须将库包含到文件中,但是如何找到所需的库并将它们链接到原始游戏文件。
在我使用这些库的那一刻:
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
#include <atomic>
#include <condition_variable>
我在网上找了库文件,没有找到。 找了很久也没有任何教程。
编辑:我在 Windows 上使用 gcc、Visual Studio Code
您需要在同一目录中与可执行文件一起分发一些
.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),所以最好不要习惯它。允许用户自己更新库也是一个好主意。
如果您的朋友只想运行您的游戏,您无需与您的朋友共享这些库。完成游戏后,您可以将其编译为可执行文件(例如 Windows 中的 .exe 文件),而您的朋友所要做的就是运行该可执行文件。
如果您要使用其他第三方库,那么您可能必须将它们作为 .dll 文件与可执行文件一起包含在内。然而,标准库不应该出现这种情况。
希望这有帮助。