zoukankan      html  css  js  c++  java
  • 插件工程模板的制作

    由于即将开发的C++插件具有相同的标准规范,所以在正式开发插件前,先创建几种常用工程,配置好后就作为其他工程的模板。要创建新的插件工程时,直接复制模板工程的所有文件,替换文件名和内容,就得到新的工程。

    VC++ 6.0 工程配置(不使用MFC的普通DLL插件工程)

    1. 对于不使用MFC的普通DLL插件工程,使用“Win32 Dynamic-Link Library”向导创建工程,输入模板工程名称(例如为Win32DllTempl),使用选项“An empty DLL project”或“A simple DLL project”完成创建;
    2. 接下来进行工程设置:
      选择“All Configurations”,进入“C/C++”页面
      1)设置警告级别为最高级“Level 4”;
      2)设置预处理定义列表,由于我们要使用UNICODE编码,故去掉 _MBCS,换成 UNICODE 和 _UNICODE,去掉不需要的 WIN32DLLTEMPL2_EXPORTS,最终得到的列表为 WIN32,_WINDOWS,_USRDLL,UNICODE,_UNICODE
      3)在“C++ Language”组中,选中“Enable Run-Time Type Information (RTTI)”选项,以便使插件接口动态转换能生效
      4)在预编译头文件中设置为“Use precompiled header file (.pch)”,对应头文件为 stdafx.h
      5)在“Code Generation”组中,对Debug和Release的“Use run-time library”分别设置为“Debug Multithreaded DLL”和“Debug Multithreaded”,即使用动态库版的C++运行时文件

      选择“All Configurations”,进入“Link”页面
      1)将LIB列表的默认值“kernel32.lib user32.lib advapi32.lib”等所有LIB去掉,以后需要哪个再加
      2)选中“Generate mapfile”选项,以便程序崩溃时可使用特殊技术定位到出错位置
    3. 设置工程的各种输出路径
      切换到Debug配置模式,在“General”页面,分别设置临时文件和输出文件的目录为
      ..\..\..\Obj\VC60\Debug\Win32DllTempl
      ..\..\..\Bin\VC60\Debug\Plugins

      在“Link”页面的“General”组,将输出文件由Win32DllTempl.dll改为Win32DllTempl.Plugin.dll(这样批量加载插件时就可以用 *.Plugin.dll 匹配,避免加载不是插件的DLL文件),输出文件的全名为 ..\..\..\Bin\VC60\Debug\Plugins/Win32DllTempl.Plugin.dll
      在“Customize”页面,设置符号调试库文件为:
      ..\..\..\Bin\VC60\Debug\Symbols/Win32DllTempl.Plugin.pdb
      在“Debug”页面,设置符号映射文件为
      ..\..\..\Bin\VC60\Debug\Symbols/Win32DllTempl.Plugin.map
      在“Project Options”编辑框中最末尾找到Win32DllTempl.Plugin.lib,由于我们不需要LIB文件,故把对应的文件全名改为
      ..\..\..\Obj\VC60\Debug\Lib/Win32DllTempl.Plugin.lib

      对于Release配置模式下的输出路径,将上述路径中的 Debug 改为 Release 即可。

    VC++ 6.0 工程配置(使用MFC的插件工程)

    最好使用MFC扩展DLL,这样就可以避免在多个DLL之间切换MFC环境的问题,具体是用“MFC AppWizard (dll)”向导创建工程,然后选择“MFC Extensin DLL (using shared MFC DLL)”。

    在这里我们采用更简单的方法,在上面介绍的Win32DLL工程基础上,把得到的工程目录复制出来,替换工程名称。然后进行如下工程设置:

    1. 选择“All Configurations”,进入“General”页面,选择MFC类型为“Use MFC in a Shared DLL
    2. 预处理定义列表改为 WIN32,_WINDOWS,_AFXEXT,_UNICODE,_WINDLL,_AFXDLL

    VC++ 2005/2008 工程设置

    相对于VC++6.0,VC++ 2005/2008 的工程设置更简单,默认已经是UNICODE、Multithreaded DLL、开启了RTTI。

    分别创建Win32DLL和MFC扩展DLL工程,选中这两个工程、选择所有配置模式,设置下面的各种路径:

    临时文件目录:  ..\..\..\Obj\VC80\$(ConfigurationName)\$(ProjectName)
    输出文件目录:  ..\..\..\Bin\VC80\$(ConfigurationName)
    输出文件:        $(OutDir)\Plugins/$(ProjectName).Plugin.dll
    符号调试文件:  $(OutDir)\Symbols/$(ProjectName).Plugin.pdb
    符号映射文件:  $(OutDir)\Symbols/$(ProjectName).Plugin.map
    生成LIB文件:   $(IntDir)/$(ProjectName).Plugin.lib

    选择警告级别为 Level 4 (/W4),开启MAP文件输出选项

    对于MFC工程,将Link页中的模块定义文件值“.\MFCExtTempl.def”去掉

  • 相关阅读:
    DES加密
    隐写术-隐藏明文的另类办法
    古典加密方法(三)转轮机
    古典加密方法(二)置换技术
    古典加密方法(一)代换技术
    基于加密算法的攻击类型的通俗解释(转载自知乎)
    指针小结
    幸福是什么?
    Jmeter常用脚本开发之FTP请求
    python自动发邮件总结及实例说明
  • 原文地址:https://www.cnblogs.com/rhcad/p/1812892.html
Copyright © 2011-2022 走看看