如何在win32控制台上parsing“printf”而不是“_printf”的符号?

testing平台是Windows 32bit。

所以基本上我想汇编+链接汇编代码片段在这些命令中:

nasm -fwin32 test.s cl test.obj /link msvcrt.lib 

它说 :

 error LNK2001: unresolved external symbol printf 

在我的代码中,我有这样的函数调用:

 call printf 

所以我把所有这些改成了

 call _printf 

它的工作。

我不熟悉Windows上的编程,但有没有办法解决printf的外部符号?

因为我正在做一些自动转换任务,并且用_开始转换所有的函数调用应该是非常单调乏味的…

任何人都可以给我一些帮助..? 谢谢!

Solutions Collecting From Web of "如何在win32控制台上parsing“printf”而不是“_printf”的符号?"

MSVCRT与使用Visual C ++编译的所有内容一样, 使用下划线前缀导出cdecl函数。 对于你自己的库,你可以重写这个行为 ,但是由于MSVCRT不是你的库,你不能改变它。

你真的将不得不让你的程序集调用使用下划线名称。 但是,nasm有一个选项--prefix ,这使得它更容易:– --prefix _ 。 (感谢弗兰克·科特勒提到这一点。)