小编myf*_*wik的帖子

使用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万
查看次数

windows C系统调用命令中的空格

我无法在名称和参数中使用空格进行系统调用.例如:

system("c:\\program files\\something\\example.exe c:\\my files\\example.txt");
Run Code Online (Sandbox Code Playgroud)

我试图逃避各种方式,我知道如何,并没有工作.我试过了:

system("\"c:\\program files\\something\\example.exe\" \"c:\\my files\\example.txt\"");
Run Code Online (Sandbox Code Playgroud)

system("c:\\program^ files\\something\\example.exe c:\\my^ files\\example.txt");
Run Code Online (Sandbox Code Playgroud)

都没有工作.我仍然得到'c:\ program'不是一个经过认可的内部或外部命令

这真让我疯了......我需要调用并传递其中包含空格的参数.我不能使用简短的符号,因为我不会进入.

我试过用'引号而不是"引号,仍然无效.我已经尝试在整个事物周围加上引号并在空格周围引用,但这不起作用.

有谁知道如何正确地做到这一点?

c windows command-line escaping

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

标签 统计

c ×2

binary ×1

command-line ×1

escaping ×1

gcc ×1

mingw ×1

windows ×1