启用MASM32构建的应用程序以支持msvcrt.dll

时间:2014-01-04 06:24:27

标签: assembly masm32 crt

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

2 个答案:

答案 0 :(得分:1)

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

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

UNICODE string output

答案 1 :(得分:0)

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