写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。
标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。
点击此处进入学习日记的总目录
2022.8.11
一、VS:_WinMain
——无法解析的外部符号
错误:
error LNK2019
: 无法解析的外部符号 _WinMain@16
,该符号在函数 ___tmainCRTStartup
中被引用。
原因:
- 新建项目是控制台应用程序而程序通过的是
WinMian
(及windows
入口函数) WinMain
的UNICODE
版和ANSI
版不匹配。
链接:
解决办法
二、C/C++:CreateThread
——创建线程函数
lpThreadAttrivutes
:指向SECURITY_ATTRIBUTES
的指针,用于定义新线程的安全属性,一般设置成NULL
;
dwStackSize
:分配以字节数表示的线程堆栈的大小,默认值是0
;
lpStartAddress
:指向一个线程函数地址。每个线程都有自己的线程函数,线程函数是线程具体的执行代码;
lpParameter
:传递给线程函数的参数;
dwCreationFlags
:表示创建线程的运行状态,其中CREATE_SUSPEND
表示挂起当前创建的线程,而0
表示立即执行当前创建的进程;
lpThreadID
:返回新创建的线程的ID编号;
如果函数调用成功,则返回新线程的句柄。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadID
);
使用截图:
三、C/C++:InitializeCriticalSection
——临界区锁
- 头文件
#include “afxmt.h”
- 初始化一个临界区对象。
链接:
临界区锁 InitializeCriticalSection()— EnterCriticalSection()–LeaveCriticalSection()