您的位置:首页 > 移动开发 > Unity3D

汇编和调用C函数 其他开发语言 / 汇编语言 - CSDN社区 community.csdn.net

2008-05-25 22:33 519 查看
导读:

我用汇编1.asm:  
      extrn   _o:near  
      data               segment  
      data               ends  
      code               segment  
      main               proc           far  
                            assume   cs:code,ds:data  
      start:  
                            push   ds  
                            sub     ax,ax  
                            push   ax  
                            mov     ax,data  
                            mov     ds,ax  
      call     _o  
      ret  
      main               endp  
      code               ends  
      end                 start  
   
  调用o.c:  
  #include  
   
  o()  
  {  
  printf("aaa");  
  }  
   
  extern       void       main();  
   
  两个文件分别编译为obj文件:  
  tcc   -c   -Iz:/tc/include   o.c  
  masm   1  
  然后连接  
  tlink   1.obj   o.obj  
  总会报错“Undefined   symbol   '_PRINTF'   in   module   O.C  
  为何?如何解决阿?

文件改为:  
  1.asm:  
      extrn   _o:near  
      public   _main  
      data               segment  
      data               ends  
      code               segment  
      _main               proc           far  
                            assume   cs:code,ds:data  
      start:  
                            push   ds  
                            sub     ax,ax  
                            push   ax  
                            mov     ax,data  
                            mov     ds,ax  
      call     _o  
      ret  
      _main               endp  
      code               ends  
      end                 start  
  o.c:  
  #include   "stdarg.h"  
  #include   "stdio.h"  
   
  o()  
  {  
      printf("%s","aaaaa");  
  }  
   
  extern   void   main();  
   
  拷贝stdarg.h、stdio.h拷到tc根目录下,masm、tcc也在这个目录  
  编译通过  
   
  但是一执行生成的exe,dos就死机了  

本文转自

http://topic.csdn.net/t/20060904/10/4996403.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐