首页
社区
课程
招聘
[求助]如何在汇编里面使用C语言编写的函数?
发表于: 2004-7-17 17:26 5292

[求助]如何在汇编里面使用C语言编写的函数?

2004-7-17 17:26
5292
我用win32汇编写主程序,要用到一些C语言写的函数。我的想法是,将C代码编译为静态库(*.lib)然后在win32汇编代码里面调用、链接。但是我不知道具体如何操作,望大家不吝赐教。

举例:
/* C代码  mylib.c  */
void function1(int parm1, int parm2)
{
   ...............
}
int function2(void *lp)
{
  ................
}
那么,这里就有几个问题:
1.那个void型的指针在汇编里面是什么类型?
2.汇编的头文件(*.inc)怎么声明?是不是:
   function1   proto parm1:word,parm2:word
   function2   proto lp:dword
我在实际操作中,用vc++编译C代码生成了lib文件,在汇编源代码里面用includelib加入了生成的库文件,在link项里面也加入了lib文件,但是invoke调用该函数(invoke function1,xx,xx)汇编编译器提示
unresolved external symbol _function@8
....................

还有,考虑到coff格式和OMF格式的区别,用什么编译器来生成lib文件最好?我用watcom生成的lib,masm32不认识(invalid library format; library ignored),所以只好用vc++.net。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在WIN32汇编中,一切堆栈参数都用DWORD就行了,void*也是如此

把obj文件也复制过来试试。
2004-7-17 17:47
0
雪    币: 208
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
试过了,问题依旧。PS:如果需要obj才能编译,那lib文件还有什么价值?
2004-7-17 18:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题还没有解决啊?

你用的C++?函数定义有没有用
“extern "C"”关键字?比如
extern "C" int fn()
{
return 123;
}

link /subsystem:windows /libpath:... asm32.obj vc.obj
2004-7-23 10:40
0
游客
登录 | 注册 方可回帖
返回
//