有两种从 DLL 导出函数的方法:
在生成 DLL 时,创建一个模块定义 (.def) 文件并使用该 .def 文件。如果希望按序号而不是按名称从 DLL 导出函数,则请使用此方法。
在函数的定义中使用 __declspec(dllexport) 关键字。
C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。大型项目的开发往往会被分割成若干个子模块,每个子模块做成DLL。经常在子模块中见到如下形式的代码:
进程切换发生在内核态模式,由于进程从用户态陷入内核态时已经将用户 进程用到通用寄存器的值,用户态的一些特殊寄存器cs,eip,ss,esp等保存在进程的内核堆栈之中,因此在内核态进行进程切换的主要工作是完成内核 堆栈的切换和相关硬件上下文的切换。
从VC6之后VC系列就使用解决方案(Solution)来替代原来的工作空间,用于组织和管理多个相关的项目(Project)。
一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档。除此以外,根据项目的需求,还会使用一些第三方的库,所以为解决方案设置一个合理的目录结构。