相关疑难解决方法(0)

使用GCC在可执行文件中嵌入资源

我正在寻找一种方法来轻松地将任何外部二进制数据嵌入到由GCC编译的C/C++应用程序中.

我想做的一个很好的例子就是处理着色器代码 - 我可以把它保存在源文件中,const char* shader = "source here";但这是非常不切实际的.

我希望编译器为我做:在编译(链接阶段)时,读取文件"foo.bar"并将其内容链接到我的程序,以便我能够从内容中访问内容作为二进制数据码.

对于我想作为单个.exe文件分发的小型应用程序可能很有用.

GCC是否支持这样的事情?

c c++ resources gcc embedded-resource

49
推荐指数
4
解决办法
2万
查看次数

使用gcc mingw嵌入二进制blob

我试图将二进制blob嵌入到exe文件中.我正在使用mingw gcc.

我像这样制作目标文件:

ld -r -b binary -o binary.o input.txt
Run Code Online (Sandbox Code Playgroud)

然后我看objdump输出来获取符号:

objdump -x binary.o
Run Code Online (Sandbox Code Playgroud)

它给出了符号:

_binary_input_txt_start
_binary_input_txt_end
_binary_input_txt_size
Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的C程序中访问它们:

#include <stdlib.h>
#include <stdio.h>

extern char _binary_input_txt_start[];

int main (int argc, char *argv[])
{
    char *p;
    p = _binary_input_txt_start;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我这样编译:

gcc -o test.exe test.c binary.o
Run Code Online (Sandbox Code Playgroud)

但我总是得到:

undefined reference to _binary_input_txt_start
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么?

c binary gcc mingw

45
推荐指数
3
解决办法
1万
查看次数

增加字符串文字长度限制

我有很多大于65535字节的字符串文字.我不允许将这些字符串保存为单独的文件,我如何解决字符串限制?

/sf/answers/804207771/

  • MSVC:2048

  • GCC:无限制(最多100,000个字符),但在510个字符后发出警告:

    String literal of length 100000 exceeds maximum length 509 that
    C90 compilers are required to support
    
    Run Code Online (Sandbox Code Playgroud)

c++ string gcc compilation visual-c++

10
推荐指数
1
解决办法
2123
查看次数

标签 统计

gcc ×3

c ×2

c++ ×2

binary ×1

compilation ×1

embedded-resource ×1

mingw ×1

resources ×1

string ×1

visual-c++ ×1