这应该是一个非常简单的问题。有许多编程语言,编译成机器代码或托管代码。我刚开始在高中时就开始了ASM。汇编程序非常好,因为你知道CPU到底做了什么。接下来,(从这里我可以看到其他问题)我决定学习C和C ++。我选择了C becouse,因为我读到它的语言输出最接近汇编程序编写的程序。
但是,我想知道的是,其他任何Windows编程语言都可以调用win32 API吗?确切地说,像C有其特殊的头和函数用于win32 api交互,这被认为是编程语言的一些重要部分吗?或者是否有任何语言不支持调用win32 API,或只是使用控制台来IO和一些基本文件IO的功能?对于具有图形输出的Windows编程,必须获得win32 API。我知道这个问题可能看起来很傻,但还是请,请帮助我,我要求学习。谢谢。
答案 0 :(得分:2)
许多不同的语言都有一种打开和使用Windows DLL文件的方法,因此您只需打开包含API函数的系统DLL并使用它们。
某些语言(例如C)通过提供包含已定义的所有内容的精美头文件来帮助您。
我见过的唯一一种可以直接访问WinAPI而无需事先打开任何库的语言是一种名为Purebasic的BASIC方言。
答案 1 :(得分:1)
您是否在询问如何从汇编中调用Win32?
只需使用MASM(或TASM,或......)
示例hello world调用Win32:
==== HelloWin.asm ==============================
.586
.model flat, stdcall
EXTERN MessageBoxA@16:NEAR
.data
szCaption db 'Hello World',0
szAppName db 'HelloWorld',0
.code
start:
push 0
push offset szCaption
push offset szAppName
push 0
call MessageBoxA@16
ret
end start
===================================================
汇编:
ml.exe / coff / c HelloWin.asm
链接:
link / subsystem:windows HelloWin.obj /defaultlib:C:\masm32\lib\user32.lib
答案 2 :(得分:0)
我以前使用Windows API的第一种语言是VB4。是的,大多数语言都可以通过某种方式访问API。
答案 3 :(得分:0)
Win32功能可从C,C ++,VB,VB .net和C#获得。在后两种情况下,您通常使用漂亮的CLR库,但如果您知道要使用正确的语法糖,则可以直接调用本机(非托管)API。
Win32的使用不仅限于上面的列表。它是一个C API有一个原因:所以任何基本上知道如何进行正确函数调用的语言都可以调用它们。在这种情况下,“正确的种类”是stdcall。所有语言的编译器(或其他任何东西)必须做的是加载正确的DLL,以正确的顺序将参数(和其他信息)推送到堆栈上,你就可以了。