网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月22日
漏签
0
天
linux吧
关注:
482,191
贴子:
2,564,739
看贴
图片
吧主推荐
视频
游戏
32
回复贴,共
1
页
<<返回linux吧
>0< 加载中...
求拯救.. C 怎么包含文件到代码中....
只看楼主
收藏
回复
a848114910
----x---
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
例如我想播放一段音频
音频文件比较小 不想单独放一个文件..
怎么以二进制的形式包含文件到程序中?...
类似.................到底是什么指令, 想不起来了
#includepath
a848114910
----x---
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
有人吗?
a848114910
----x---
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
鼠标乱飘
----xr--
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
mark,我也想知道。
挖侠盗
----x--x
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你可以把你的音频文件手动放到程序的末尾(elf的末尾),在程序里读出来就是了
彼岸0此方
----x--x
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
vim16进制打开,复制。。。粘贴。。。
还是来碗米饭吧
----xrw-
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我拿x86_64 的环境演示一下吧,假设在C 文件里面使用一段音频文件的数据,首先把音乐文件转换成o 文件:
~/Tmp/tmp » objcopy -I binary -O elf64-x86-64 -B i386 奥井亜纪\ -\ 月の茧.mp3 奥井亜纪\ -\ 月2の茧.o
然后看下这个o 文件的符号表,看看都有啥
~/Tmp/tmp » objdump -x 奥井亜纪\ -\ 月2の茧.o
奥井亜纪 - 月2の茧.o: 文件格式 elf64-x86-64
奥井亜纪 - 月2の茧.o
体系结构:i386:x86-64,标志 0x00000010:
HAS_SYMS
起始地址 0x0000000000000000
节:
Idx Name Size VMA LMA File off Algn
0 .data 00d041da 0000000000000000 0000000000000000 00000040 2**0
CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
0000000000000000 l d .data 0000000000000000 .data
0000000000000000 g .data 0000000000000000
_binary__________________________mp3_start
0000000000d041da g .data 0000000000000000
_binary__________________________mp3_end
0000000000d041da g *ABS* 0000000000000000
_binary__________________________mp3_size
这三个符号就是对外公开的,可以在C 文件中直接引用。
举个例子吧,假设编写一段C 代码
~/Tmp/tmp » cat main.c
#include <stdio.h>
int
main (int argc, char *argv)
{
extern char _binary__________________________mp3_start[];
extern char _binary__________________________mp3_end[];
extern char _binary__________________________mp3_size[];
printf ("数据文件的信息如下:\n");
printf ("起始地址:%p\n", _binary__________________________mp3_start);
printf ("结束地址:%p\n", _binary__________________________mp3_end);
printf ("数据字节数:%p\n", _binary__________________________mp3_size);
return 0;
}
然后编译下看看结果就知道了
~/Tmp/tmp » gcc -c main.c
~/Tmp/tmp » gcc -o main main.o 奥井亜纪\ -\ 月2の茧.o
~/Tmp/tmp » main
数据文件的信息如下:
起始地址:0x6009f8
结束地址:0x1304bd2
数据字节数:0xd041da
有了起始地址和结束地址了都,读数据照着地址来就可以了。
char *start = _binary__________________________mp3_start;
char *end = _binary__________________________mp3_end;
楼主要的数据就在这两个指针的范围内。
a848114910
----x---
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其实我是想用来包含这个 UI, 文件就几kb...
UI 经常小改一下... 手动生成目标文件太蛋疼了...
干脆就让它单独着吧
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示