注册 登录
编程论坛 汇编论坛

求助 打不开msvcrt.lib

m21wo 发布于 2011-02-18 19:37, 3313 次点击
.386
.MODEL FLAT ,STDCALL
OPTION CASEMAP:NONE
INCLUDE MSVCRT.LIB
PRINTF  PROTO C :PTR SBYTE,:VARARG
.DATA
SZMSG  BYTE "HELLO WORLD ",0AH,0
.CODE
START:
     INVOKE PRINTF ,OFFSET SZMSG
    RET
END    START


这段程序,我用win-masm运行出现 打不开msvcrt.lib ,请高手告诉我为啥,怎样放msvcrt.lib?
13 回复
#2
ansic2011-02-18 20:26
INCLUDE PATH:\MSVCRT.LIB ;指明msvcrt.lib所在路径
#3
m21wo2011-02-18 20:48
程序代码:
.386
.MODEL FLAT ,STDCALL
OPTION CASEMAP:NONE
INCLUDE C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRT.LIB
PRINTF  PROTO C :PTR SBYTE,:VARARG
.DATA
SZMSG  BYTE "HELLO WORLD ",0AH,0
.CODE
START:
     INVOKE PRINTF ,OFFSET SZMSG
    RET
END    START
还是运行不成功啊
#4
ansic2011-02-18 20:52
RET不需要吧,程序结束应该用

invoke ExitProcess,NULL


(对win32汇编不熟悉。)
#5
wisji82011-02-19 06:31
include改为includelib试试看。
因为打开.lib文件是用includelib,而include是包含.inc文件的。

[ 本帖最后由 wisji8 于 2011-2-20 07:51 编辑 ]
#6
xiaomarn2011-02-20 13:00
嗯,同意楼上,用includelib
#7
m21wo2011-02-20 18:06
程序代码:
程序代码:
.386
.MODEL FLAT ,STDCALL
OPTION CASEMAP:NONE
INCLUDELIB C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRT.LIB
PRINTF  PROTO C :PTR SBYTE,:VARARG
.DATA
SZMSG  BYTE "HELLO WORLD ",0AH,0
.CODE
START:
     INVOKE PRINTF ,OFFSET SZMSG
    RET
END    START
还是不对!结果还是这样。
只有本站会员才能查看附件,请 登录
#8
zklhp2011-02-20 18:18
printf  PROTO C :PTR SBYTE,:VARARG

这样?

C貌似大小写敏感罢 是小写的。。


[ 本帖最后由 zklhp 于 2011-2-20 18:21 编辑 ]
#9
zklhp2011-02-20 18:21
建议 如果懒得搞这个编译环境 就用IDE 省得麻烦
#10
m21wo2011-02-20 20:58
程序代码:
.386
.model flat ,stdcall
option casemap:none
includelib c:\program files\microsoft visual studio 8\vc\lib\msvcrt.lib
printf  proto c :ptr sbyte,:vararg
.data
szmsg  byte "hello world ",0ah,0
.code
start:
     invoke printf ,offset szmsg
    ret
end    start
还是达不到想要的效果
#11
zaixuexi2011-02-20 22:56
回复 10楼 m21wo
1. 把你的库路径加到环境变量的lib下,这样就不用打绝对路径了.
我的电脑->属性->高级->环境变量->用户变量->lib加如库路径,比如;E:\masm32\lib
2. makefile如下:
NAME = Hello
OBJS = $(NAME).obj

LINK_FLAG = /subsystem:console              ;subsystem用console
ML_FLAG = /c /coff

$(NAME).exe: $(OBJS)
    Link $(LINK_FLAG) $(OBJS)
.asm.obj:
    ml $(ML_FLAG) $<

clean:
    del *.obj
3.代码如下:
程序代码:
.386
.model flat ,stdcall
option casemap:none
includelib msvcrt.lib
printf  proto c :ptr sbyte,:vararg
.data
szmsg byte "hello world ",0ah,0
.code
start:
      invoke printf ,offset szmsg
      ret
end   start

 
#12
wisji82011-02-20 22:58
printf  proto c :ptr sbyte,:vararg
invoke printf ,offset szmsg
这两句我看着不顺眼。但因为我是初学的,所以不敢表达出问题。
#13
WDMfans2011-02-21 15:06
搞不定 就不搞撒~~~~~~~~~~`

这代码 编译通过  运行无误~~~~~~~~
#14
zklhp2011-02-21 15:18
编译环境的问题 不好搞啊。。
1