Skip to content
Zhang Yungui edited this page Dec 26, 2015 · 13 revisions

如何创建插件工程

方法一、使用 makeplugin.py 自动创建工程

makeplugin.py 的功能:复制一个工程的所有文件到新的目录,然后替换文件名和文件内容(将包和工程名替换为新的)。

在运行 makeplugin.py 之前先确保已安装 python。可将*.py文件关联到Python.exe,这样双击py文件就可直接运行。

运行 tools/makeplugin.py 后按照提示就可创建出一个新工程。 对提示信息说明如下:

  • Project name: 输入新工程名,不含有目录、空格、特殊字符,例如 mytool 。
  • Target package name (example): 输入新工程所在的包的名称,不含有目录、空格、特殊字符,如果为空则取为example,如果对应包目录不存在则自动创建目录。
  • Template project name (pltempl): 输入已存在的模板工程的名称,如果为空则取为pltempl。将复制模板工程文件到新工程目录下。
  • Template package name (example): 输入模板工程所在的包的名称,如果为空则取为example。
  • Need swig (y/n) ? (n): 如果需要同时创建SWIG工程则输入 y ,否则回车。

方法二、手动创建工程

使用 VC++ 的向导创建工程(MFC App、MFC DLL、Win32 DLL、ActiveX、ATL、Console 等)后,按照下列步骤可配置为插件工程。

  1. 在工程属性中加入包含路径

    包含内核接口目录 ..\..\interface\core 和其他必要的包的接口目录,例如 ..\..\interface\yourpackage ,需要根据实际目录情况来设置 interface 目录的相对目录名。如果不想为每个新建的工程设置接口包含目录,可以把 ..\..\interface\core 或其绝对地址添加到 VC++ Tools 全局选项的 Include Files 中。

  2. 包含插件实现文件

    在工程的一个CPP文件(例如 projectname.cpp 、 dllmain.cpp、main.cpp 或 module.cpp)中,包含下面的代码就可实现一个最简单的插件:

     #include <module/pluginimpl.h>
     #include <module/modulemacro.h>
    
     //#include "yourclass.h"
    
     XBEGIN_DEFINE_MODULE()
         //XDEFINE_CLASSMAP_ENTRY(yourclass)
     XEND_DEFINE_MODULE_DLL()
    
     OUTAPI bool x3InitializePlugin()
     {
         return true;
     }
    
     OUTAPI void x3UninitializePlugin()
     {
     }
    

    编译时可能会遇到“theApp已定义”、“DllMain已定义”的错误,请按照 modulemacro.h 中相关注释修正,通常都是去掉向导生成的代码或者改为使用XEND_DEFINE_MODULE()并调用x3DllMain()或x3InitPlugin()。

    如果不需要实现任何接口,则可以只包含下面更简单的代码:

     #include <module/pluginimpl.h>
     #include <module/modulemacro.h>
     XDEFINE_EMPTY_MODULE()
    

    提示:由于VC++向导生成的CPP文件一般都先包含stdafx.h,因此 module/plugininc.h 文件无论包含与否都可。使用VC++时可以不需要 module/plugininc.h 和 interface\core\portability 目录。

Create a plugin project with CodeBlocks

  1. Create a new project using the wizard such as 'Shared library'.

    • Language: C++.
    • Let's assume the position of new project is x3py/projects/codeblocks.
  2. Set the project build options (Search directories | Compiler).

    ../../../interface/core and your customized paths such as ../../../interface/example.

  3. Add *.h and *.cpp files of your plugin, such as x3py/source/example/plsimple.

Clone this wiki locally