Assembly 启用MASM32内置应用程序以支持msvcrt.dll

Assembly 启用MASM32内置应用程序以支持msvcrt.dll,assembly,masm32,crt,Assembly,Masm32,Crt,我需要用汇编语言构建控制台应用程序。由于我懒得在ReadConsoleEA的帮助下重新发明读取字符串的方轮,手动将它们转换为整数(或解析它们),以同样令人厌烦的方式向后输出等等,所以我选择使用CRT来帮助自己。 我从中获得了masm32软件包,用VS2008中删除的可执行文件对其进行了修改,并开始使用它。WinAPI库(例如,kernel32.lib)使用起来很流畅,但一旦我链接了msvcrt.lib,我在那里使用函数时遇到了CRT运行时错误R6034(wprintf()) 在谷歌搜索之后,我发

我需要用汇编语言构建控制台应用程序。由于我懒得在ReadConsoleEA的帮助下重新发明读取字符串的方轮,手动将它们转换为整数(或解析它们),以同样令人厌烦的方式向后输出等等,所以我选择使用CRT来帮助自己。
我从中获得了masm32软件包,用VS2008中删除的可执行文件对其进行了修改,并开始使用它。WinAPI库(例如,kernel32.lib)使用起来很流畅,但一旦我链接了msvcrt.lib,我在那里使用函数时遇到了CRT运行时错误R6034(
wprintf()
) 在谷歌搜索之后,我发现这个错误是由我没有在我的应用程序中链接清单引起的。来自MSDN的唯一可靠链接严重依赖于VS,因此显然不起作用。
现在我有3种方法和3个问题要问:
1) 我使用另一个装配工具(例如fasm)是否更好?使用哪一个?

2) 那么我如何将msvcrt.dll链接到我的应用程序?

问题已解决。我刚刚废弃了masm32并使用了fasm。

不,问题没有解决。您不知道如何使用汇编程序,只是放弃了它。当需要从MASM32代码调用C库中的函数时,必须在所有函数名前面加上
crt
。不知道为什么哈奇这样做,可能是为了防止命名问题

include masm32rt.inc
include msvcrt.inc
includelib msvcrt.lib

.data
fmtw      dw  "%", "l", "s", 13, 10, 0
UniString dw 'H','e','l','l','o',' ','f','r','o','m',' ','a',' ','U','N','I','C','O','D','E',' ','s','t','r','i','n','g','!','!','!','!','!',0

.code
start:

    invoke  crt_wprintf, offset fmtw, offset UniString

    inkey
    invoke  ExitProcess, 0
end start