#include <stdio.h>
#include <malloc.h>
#include <sys/stat.h>
typedef int (*PFUNC)(int,int);
typedef struct
{
int Position;
int Length;
}Fun; typedef struct
{
int num;
Fun *pFun;
}Lib; int main()
{ int FileSize =;
char FileName[] = "code.obj";
FILE * FileHandle = fopen(FileName,"rb");
if(FileHandle!=NULL)
{
Lib lib;
fread(&lib.num,sizeof(char),,FileHandle);
//确定文件中有几个函数
lib.pFun =(Fun*)malloc(sizeof(Fun)*lib.num);
fread(lib.pFun,sizeof(Fun),lib.num,FileHandle);
//读取文件中第一个函数的信息,(在文件中的)地址和长度
char *instruction= (char*)malloc(sizeof(char)*lib.pFun->Length);
//根据函数在内存中为函数分配空间
fseek(FileHandle,lib.pFun->Position,);
//移动至函数地址,以字节为单位,0代表文件第一个字节
fread(instruction,sizeof(char),lib.pFun->Length,FileHandle);
//读取函数指令到预留内存
PFUNC pfunc = (PFUNC)instruction;
printf("%d \n",pfunc(,));
//执行函数
}
} /*
说明:
1)没有附带函数类型信息,如果支持函数类型信息,那么可以说这就是DLL文件
2)读取文件时可以把文件想象成一个char A[m],有一个char的指针指向到这个
数组,并在这个数组中前后移动,初始指到A[0],我们总是从这个指针指向的
地址向后读取一定的字节复制到另一个数组,假设指针指向A[0],我们要读取
10个字节,读取完之后,指针定位到A[10],当然,我们也可以借助fseek任意的
移动指针
size_t fread(void *buffer,size_t size,size_t count,FILE *stream)
{
int i=0;
while(stream->ptr!=NULL && i<count)
{
buffer = stream->ptr;
(stream->ptr)++;
}
return i;
} // 假想的函数代码 int fseek( FILE *stream,long offset,int origin)
{
stream->ptr = offset + origin
}
*/

CODE.OBJ
01 00 00 00 0C 00 00 00 2B 00 00 00 55 8B EC 81
EC C0 00 00 00 53 56 57 8D BD 40 FF FF FF B9 30
00 00 00 B8 CC CC CC CC F3 AB 8B 45 08 03 45 0C
5F 5E 5B 8B E5 5D C3

最新文章

  1. eclipse + marven
  2. Android activity和service的生命周期对比
  3. 【BZOJ-3712】Fiolki LCA + 倍增 (idea题)
  4. 关于IE中通过http-equiv=&quot;X-UA-Compatible指定文件兼容性模式
  5. [转]VGA、QVGA、CIF、QCIF 。。。的含义
  6. IdHttpServer实现webservice
  7. java 读取固定目录下的文件(和上篇差点儿相同)
  8. HPQC HP Quality Center windows 服务
  9. WSDL/WebService/SOAP/REST/AXIS/CXF 开放式服务
  10. 简单地总结几种常见web攻击手段及其防御方式
  11. NHibernate从入门到精通系列(3)——第一个NHibernate应用程序
  12. ThreadLocal之我所见
  13. 页面间固定参数,通过cookie传值
  14. php学习----基本介绍及数据类型
  15. Python网络编程之socket编程
  16. Python判断字符串是否xx开始或结尾
  17. js callback 和 js 混淆
  18. Unity镜子效果的实现(无需镜子Shader)
  19. Elasticsearch学习之深入搜索四 --- cross-fields搜索
  20. jQuery学习-属性选择器

热门文章

  1. Android 自学之基本界面组件(上)
  2. ssh 安全配置
  3. Tinymce4 中Ajax多次加载时,会出现菜单在第二次进入时,显示的下拉菜单在左上角
  4. $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]、$_POST和php://input深入探究三者的区别
  5. JavaScript高级程序设计(第三版)学习笔记20、21、23章
  6. Spring AOP (Spring 3.x 企业应用开发实战读书笔记第六章)
  7. clock_gettime的使用,计时比clock()精确
  8. Brackets 配置
  9. Oracle笔记(三)单行函数
  10. JavaScript学习笔记(2)——JavaScript和DOM的关系