Win16 DLL与Win32 DLL之间的区别

如果您已为 Windows 3.x 生成了 16 位 DLL,应发现生成 32 位 DLL 更为方便。编译器提供了更直接的支持,它可以省去 DLL 创建过程中的若干步骤。Win16 DLL 和 Win32 DLL 之间的具体差异包括:

  • 没有必须要链接的单独的启动模块。DLL 启动序列直接由链接到 DLL 中的 C/C++ 运行时库代码处理。

  • 运行时库代码通过调用适当的构造函数初始化任何静态非本地 C++ 对象。每个进程均获取自己的所有 DLL 静态数据(包括对象)的副本。

  • 不再需要 LibMainWEP 函数(Windows 退出过程)。在何处为 DLL 添加初始化代码和终止代码取决于所生成的 DLL 类型。提供 DllMain 而非 LibMain,而当进入和退出时都要调用前者。

  • 可以直接在源代码中导入或导出符号。如果使用 __declspec(dllexport) 属性(类似于 Windows 3.x 中的 __export),则无需为导出使用单独的模块定义文件。

  • 使用 __declspec(dllimport) 从 DLL 导入数据、对象和函数的可执行文件使编辑器生成更有效的代码。

  • 对用 atexit 注册的例程的调用执行时间可以不同。

  • 除了 Win32 非 MFC DLL 外,Visual C++ 还提供了三种 MFC DLL 类型。

相关文章:

  • 2022-12-23
  • 2021-11-03
  • 2022-12-23
  • 2021-08-20
  • 2021-12-14
  • 2021-10-04
  • 2021-07-06
  • 2021-11-18
猜你喜欢
  • 2022-12-23
  • 2021-04-12
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案