gpt4 book ai didi

c++ - 在 C++ 中存储巨大的静态变量

转载 作者:可可西里 更新时间:2023-11-01 17:57:25 27 4
gpt4 key购买 nike

我有一串大约 17 kb 长的信息。我的程序不会生成此字符串或将其读入缓冲区 - 数据已经初始化,我希望它在我的代码中按原样编译,就像静态变量一样。此外,我更希望它在我的可执行文件中,而不是存储在项目文件中。我以前从未遇到过这样的问题,解决这个问题的最佳方法是什么?我应该作为资源包括在内,还是直接将大量数据流复制并粘贴到变量中?你会推荐什么?

忘了说,如果重要的话,我正在使用 VisualStudio C++ 2015

最佳答案

GNU 链接器 ld 能够直接将自定义数据作为目标文件的 .data 部分包含在内:

 ld -r -b binary -o example.o example.txt

生成的 example.o 文件定义了符号以访问嵌入数据的开始和结束(只需查看带有 objdump 的文件以了解它们的命名方式).

现在我不知道 Visual Studio 附带的链接器是否具有类似的能力,但我想您可以通过 mingw 或通过 cygwin 使用 GNU 链接器(因为生成的目标文件不会引用标准库你不需要 cygwin 附带的仿真库)。生成的目标文件 apparently can just be added to your sources like a regular source file .

当然,如果数据经常变化,这种手动工作流程就不太好了......

或者,您可以编写一个简单的程序,将文件的内容放入 C 字符串中,例如:

unsigned char const * const data = { 
0x12, 0x34, 0x56 };

当然已经有这样的程序(xdd),但不知道你是否可以使用。一个潜在的问题是您可以 reach the limit for the length of string literals that way .要解决这个问题,您可以尝试使用(多维)字符数组。

(写这个答案时我发现 this blog post 很有帮助。)

关于c++ - 在 C++ 中存储巨大的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42384643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com