很久没有来逛了,从论坛下载了不少各位大侠的作品,但大多成了收藏品,还是非常感谢各位网友! 分享一个小工具吧,它没有什么大用,主要用来打包,可以把任意文件转换成obj/lib,方便在程序中引用。 为什么要这样呢?原因很简单: 1)如果你作为resource导入工程当然可以,但别人用……比如VC,open as resource就看见了,另存为就完整的抓到了。7zip提取资源也很easy。可能你不介意这个。 2)你自己要用的时候要FindResource()/LoadResource(),大概勤劳的你也不介意。 3)你可以压缩文件减小尺寸,加密文件以防字符串查找什么的。大家可以自由发挥,虽然我没提供这类功能。当然,作为资源也可以这样做。 用法: 在命令行下运行 cvmk 文件列表 得到libbin.h/.lib,链接到你的工程里面即可。文件列表可以是单个文件,也支持通配符*/?。 由于我比较懒,批处理命令最多只接受9个参数,对于聪明的你应该够用了。比如你要转换一堆DLL,放到A:\binary目录下,在A:\binary目录下执行 cvmk *.dll,只用了一个参数。 用的地方 #include "libbin.h" #pragma comment(lib,"libbin.lib") 假设源文件是abc.dll,libbin.h里面会定义ORG_SIZEOF_ABC_DLL为源文件的字节数,extern unsigned char abc_dll[],这个数组就是源文件的内容。注意:这个声明不要改,这样声明最简洁,不信你改别的样式试试。 已知缺陷:基本文件名相同,扩展名不同的多个文件不能转,原因是转换时简单地去掉了扩展名,只产生一个.obj。 最后说明一下,里面附带的工具是VC6的,源码只有区区4KB。你可以做一些改动以适合你的需要。比如数据段名不叫.rdata,或者包含共享属性,或者可执行,或者其他的CPU架构,诸如此类。 祝各位网友新年快乐!
[注意]APP应用上架合规检测服务,协助应用顺利上架!
DoItFreely 转成数组源码需要编译,文件大需要调整编译器的堆栈大小才能编译,文件太大就把编译器整挂了。