首页
社区
课程
招聘
[讨论]如何用masm32创建静态链接库
发表于: 2007-10-13 13:17 7634

[讨论]如何用masm32创建静态链接库

2007-10-13 13:17
7634
论坛里高手们你们好,小弟我有个问题想请教,我用masm32编译了一个dll文件,我的主程序中调用了这个dll,但现在我想直接把这个dll编译成静态链接库,请问怎么编译,请高手们指教!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 668
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嘛意思没有理解.
你是不是说.你不想loadlibrary这样调用?

你想在程序里 直接就可以当函数应用?
2007-10-13 15:45
0
雪    币: 267
活跃值: (2376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
他所说的意思是编译成lib的静态连接库吧
2007-10-13 16:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是的,就是把这个dll编译成静态链接库,现在我已经知道方法了,只要修改编译选项就可以了:
ml /c /coff %1.asm
link -lib %1.obj
生成这个静态链接库后,我在汇编中写了一个调用函数,OpenFile        proc    szFileName :DWORD
在vc中我声明的是:extern "C" void _stdcall OpenFile(DWORD file);
这样应该没有错吧,但在调用这个函数的时候我是这样调用的
:char szOpenFile[512];
  wsprintf( szOpenFile ,"%s","d:\\hello.txt");
  OpenFile((DWORD)szOpenFile);
这样编译是没有问题的,但运行后却出错,不知道为什么
2007-10-13 19:39
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NIU
5
是我搞错了,不好意思
2007-10-13 20:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=NIU;370471]这两句有问题
改成:
char szOpenFile[512]="%s";
wsprintf( szOpenFile, "d:\\hello.txt" );[/QUOTE]

为什么要这样改阿
2007-10-13 20:58
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
刚才我将汇编函数过程进行了修改,在汇编代码里修改为OpenFile  proc szFileName :PTR CHAR

在vc调用里修改为
extern "C" void _stdcall OpenFile(char *file);
char szOpenFile[512];
lstrcpy(szOpenFile,"d:\\hello.txt");
OpenFile(szOpenFile);
编译链接也是没问题,但运行后还是出错,不知道怎么回事,郁闷
2007-10-13 21:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NIU
8
前面是我搞错了,不好意思。
刚才我将汇编函数过程进行了修改,在汇编代码里修改为OpenFile proc szFileName :PTR CHAR
汇编代码用原来的就行了,不用改的吧。在汇编里,stdcall的参数类型说到底都是DWORD,至于代表什么,自己定义就是了。

会不会是OpenFile函数与win原有的API函数重名导致?改一下函数名试试
2007-10-13 21:48
0
游客
登录 | 注册 方可回帖
返回