什么是SDK
控制台程序(Console User interface)CUI
对于控制台程序,通用,也就是平台无关
图形界面系统
可是如果你想要播放一个音乐,C语言有嘛?
所以需要平台开发,不可以移植性
平台会提供函数,操作系统提供给软件的功能,而且提供的函数往往是超过库的
特别是游戏,openg l(游戏图形等标准化)dx
我们一般把系统给操作者的函数,叫API
API(头文件、库)
所以SDK(Software Development Kit)软件开发工具包, 把头文件、库等打包
比如你要写个windows的应用程序,第一步你得去下载SDK
现在得SDK现在集成在了VS
不同SDK的有什么差异?
如果你需要新的功能,所以更新添加,或者修改,修复bug
windows的sdk发一般都是在C盘下
https://learn.microsoft.com/zh-cn/windows/apps/
https://learn.microsoft.com/zh-cn/visualstudio/windows/?view=vs-2022
当然sdk还有离线的文档,这里我没去找了
从操作系统的底层来说,都是用了W的版本
在上图我们windows所有类型都被定义了,而且看到大多都是大写
简单来说,就是方便大家更新,也防止因为类型导致的程序报错
对于类型问题,同时也要少写对地址进行位移运算
#include <windows.h>
#include<tchar.h>
#include <stdio.h>
#include <strsafe.h>
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
TCHAR* lpCmdline, //命令行参数,LPSTR可能会变成Unicode
int nCmdShow) {
/*MessageBoxA(NULL, "hell word ", "asm", MB_YESNO);*/\
int res = MessageBoxW(NULL, L"hell unicode", L"asm", MB_YESNO);
DWORD error= GetLastError();//最后一次的错误码
LPVOID lpMsgBuf;
if (error != ERROR_SUCCESS) {
/* MessageBoxW(NULL, L"错误", L"asm", MB_OK);*/
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |/* 分别为FORMAT_MESSAGE_ALLOCATE_BUFFER由函数分配输出缓冲区,
FORMAT_MESSAGE_FROM_SYSTEM表示程序将会在系统消息表资源中搜索所需消息,
FORMAT_MESSAGE_IGNORE_INSERTS程序将会忽略搜索到消息中的插入序列。 */
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0, NULL);
MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK|MB_ICONINFORMATION);
LocalFree(lpMsgBuf);
ExitProcess(error);
return 0;
}
return 0;
}