Возможности разных языков программирования - PullRequest
1 голос
/ 20 апреля 2010

Это должен быть очень простой вопрос. Существует множество языков программирования, скомпилированных в машинный код или управляемый код. Я впервые начал с ASM еще в старшей школе. Ассемблер очень хорош, так как вы знаете, что именно делает процессор. Затем (как вы можете видеть из моих других вопросов здесь) я решил изучать C и C ++. Я выбрал C, потому что из того, что я читал, это язык с выводом, наиболее близким к программам, написанным на ассемблере.

Но я хочу знать, может ли какой-либо другой язык программирования Windows называть win32 API? Если быть точным, то как у C есть специальный заголовок и функции для взаимодействия с Win32 API, предполагается ли это важной частью языка программирования? Или есть ли языки, которые не поддерживают вызов win32 API, или просто используют консоль для ввода-вывода и некоторые функции для базового ввода-вывода файлов? Поскольку для программирования Windows с графическим выводом важно иметь доступ к Win32 API. Я знаю, что этот вопрос может показаться глупым, но все же, пожалуйста, помогите мне, я прошу учиться у свиней. Благодарю.

Ответы [ 4 ]

2 голосов
/ 20 апреля 2010

Многие языки имеют возможность открывать и использовать файлы Windows DLL, так что вы можете просто открыть системные DLL, которые содержат функции API, и использовать их.

Некоторые языки, такие как C, помогают вам, предоставляя хороший заголовочный файл со всем уже определенным.

Единственный другой язык, который я когда-либо видел, который имеет прямой доступ к WinAPI без необходимости открывать какую-либо библиотеку заранее, - это диалект BASIC под названием Purebasic .

1 голос
/ 20 апреля 2010

Вы спрашиваете, как вызвать 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

Для ссылки:

ссылка / подсистема: windows HelloWin.obj /defaultlib:C:\masm32\lib\user32.lib

0 голосов
/ 20 апреля 2010

Функциональность Win32 доступна в C, C ++, VB, VB .net и C #. В последних двух вы, как правило, используете симпатичные библиотеки CLR, но вы можете напрямую вызывать собственные (неуправляемые) API-интерфейсы, если знаете правильный синтаксический сахар для разбрасывания.

Использование Win32 не ограничено приведенным выше списком. Это причина C API по той причине, что любой язык, который по сути знает, как сделать правильный тип вызова функции, может вызывать их. И в этом случае «правильный вид» равен stdcall . Все, что должен сделать компилятор языка (или что-то еще), это загрузить правильную DLL, поместить аргументы (и другую информацию) в стек в правильном порядке, и все готово.

0 голосов
/ 20 апреля 2010

Первым языком, который я использовал для доступа к Windows API, был VB4. Да, большинство языков каким-то образом могут получить доступ к API.

...