开始

首先下载LibreDWG的源代码,
git clone https://github.com/LibreDWG/libredwg.git
下载完成后,把src文件夹和include文件夹复制到qt工程目录下
jsmn文件夹是空的,也需要下载
git clone https://github.com/zserge/jsmn

第一次失败的尝试

第一次用libredwg-0.10.1.2969-win32.zip里的.a静态库,但是编译的时候出错,猜测可能是编译器版本不一样,既然编译好的库不能用,就只能自己编译源代码了

编译源代码


添加新文件,把下载到的LibreDWG/src下的所有.c.h和有用的文件全部添加到工程中,新建一个窗口,一个QPushButton

引用头文件、编写测试代码

#define restrict
#include "include/dwg.h"
void Widget::add_line (double x1, double x2, double y1, double y2)
{// Make something with thatqDebug()<<"//add_line"<<x1;qDebug()<<","<<y1;qDebug()<<","<<x2;qDebug()<<","<<y2;QPainter painter(&pix);painter.setPen(Qt::red);painter.drawLine(x1,y1,x2,y2);update();
}void Widget::add_circle (double x, double y, double R)
{// Make something with thatqDebug()<<"//add_circle"<<x;qDebug()<<","<<y;qDebug()<<","<<R;QPainter painter(&pix);painter.setPen(Qt::blue);painter.drawEllipse(x,y,R,R);update();
}int Widget::load_dwg (char *filename, unsigned int opts)
{BITCODE_BL i;int success;Dwg_Data dwg;memset (&dwg, 0, sizeof (Dwg_Data));dwg.opts = opts;success = dwg_read_file (filename, &dwg);for (i = 0; i < dwg.num_objects; i++){Dwg_Entity_LINE *line;Dwg_Entity_CIRCLE *circle;Dwg_Entity_TEXT *text;//qDebug()<<"//typeINT:"<<dwg.object[i].type;switch (dwg.object[i].type){case DWG_TYPE_LINE:line = dwg.object[i].tio.entity->tio.LINE;qDebug()<<"//type:line";add_line (line->start.x, line->end.x, line->start.y, line->end.y);break;case DWG_TYPE_CIRCLE:circle = dwg.object[i].tio.entity->tio.CIRCLE;qDebug()<<"//type:DWG_TYPE_CIRCLE";add_circle (circle->center.x, circle->center.y, circle->radius);break;case DWG_TYPE_TEXT:text = dwg.object[i].tio.entity->tio.TEXT;qDebug()<<"//type:DWG_TYPE_TEXT";add_text (text->insertion_pt.x, text->insertion_pt.y,text->text_value);break;default:break;}}dwg_free (&dwg);return success;
}

完善其他的代码

头文件(widget.h中)

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPixmap>
#include <QFileDialog>
#include <QDebug>
#include <QPainter>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();static void setx(double x);void add_line (double x1, double y1, double x2, double y2);int load_dwg (char *filename, unsigned int opts);void add_circle (double x, double y, double R);protected:void paintEvent(QPaintEvent *event);private slots:void on_pushButton_clicked();private:Ui::Widget *ui;QPixmap pix;
};#endif // WIDGET_H

重写paintEvent(widget.cpp中)


void Widget::paintEvent(QPaintEvent *event)
{QPainter paint(this);paint.drawPixmap(0,0,pix);
}

qpushbutton鼠标点击(widget.cpp中)


void Widget::on_pushButton_clicked()
{qDebug()<<"start";QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), "./",tr("Excel Files (*.dwg)"));if (fileName.isEmpty())return;pix = QPixmap(size());pix.fill(Qt::white);qDebug()<<"filename:"<<fileName;load_dwg(fileName.toUtf8().data(),0);
}

运行结果

需要改进的地方

  1. 屏幕的(0,0)坐标是在左上角,而CAD绘图的(0,0)坐标在左下角,需要把上下对称一下,用屏幕高度-x坐标就可以
  2. 现在只能识别直线和圆,需要添加更多图形识别,根据LibreDWG的定义如下:

dwg文件中存在的对象和实体类型

/**Object and Entity types that exist in dwg-files.*/
typedef enum DWG_OBJECT_TYPE
{DWG_TYPE_UNUSED = 0x00,DWG_TYPE_TEXT = 0x01,DWG_TYPE_ATTRIB = 0x02,DWG_TYPE_ATTDEF = 0x03,DWG_TYPE_BLOCK = 0x04,DWG_TYPE_ENDBLK = 0x05,DWG_TYPE_SEQEND = 0x06,DWG_TYPE_INSERT = 0x07,DWG_TYPE_MINSERT = 0x08,/* DWG_TYPE_<UNKNOWN> = 0x09, */DWG_TYPE_VERTEX_2D = 0x0a,DWG_TYPE_VERTEX_3D = 0x0b,DWG_TYPE_VERTEX_MESH = 0x0c,DWG_TYPE_VERTEX_PFACE = 0x0d,DWG_TYPE_VERTEX_PFACE_FACE = 0x0e,DWG_TYPE_POLYLINE_2D = 0x0f,DWG_TYPE_POLYLINE_3D = 0x10,DWG_TYPE_ARC = 0x11,DWG_TYPE_CIRCLE = 0x12,DWG_TYPE_LINE = 0x13,DWG_TYPE_DIMENSION_ORDINATE = 0x14,DWG_TYPE_DIMENSION_LINEAR = 0x15,DWG_TYPE_DIMENSION_ALIGNED = 0x16,DWG_TYPE_DIMENSION_ANG3PT = 0x17,DWG_TYPE_DIMENSION_ANG2LN = 0x18,DWG_TYPE_DIMENSION_RADIUS = 0x19,DWG_TYPE_DIMENSION_DIAMETER = 0x1A,DWG_TYPE_POINT = 0x1b,DWG_TYPE__3DFACE = 0x1c,DWG_TYPE_POLYLINE_PFACE = 0x1d,DWG_TYPE_POLYLINE_MESH = 0x1e,DWG_TYPE_SOLID = 0x1f,DWG_TYPE_TRACE = 0x20,DWG_TYPE_SHAPE = 0x21,DWG_TYPE_VIEWPORT = 0x22,DWG_TYPE_ELLIPSE = 0x23,DWG_TYPE_SPLINE = 0x24,DWG_TYPE_REGION = 0x25,DWG_TYPE__3DSOLID = 0x26,DWG_TYPE_BODY = 0x27,DWG_TYPE_RAY = 0x28,DWG_TYPE_XLINE = 0x29,DWG_TYPE_DICTIONARY = 0x2a,DWG_TYPE_OLEFRAME = 0x2b,DWG_TYPE_MTEXT = 0x2c,DWG_TYPE_LEADER = 0x2d,DWG_TYPE_TOLERANCE = 0x2e,DWG_TYPE_MLINE = 0x2f,DWG_TYPE_BLOCK_CONTROL = 0x30,DWG_TYPE_BLOCK_HEADER = 0x31,DWG_TYPE_LAYER_CONTROL = 0x32,DWG_TYPE_LAYER = 0x33,DWG_TYPE_STYLE_CONTROL = 0x34,DWG_TYPE_STYLE = 0x35,/* DWG_TYPE_<UNKNOWN> = 0x36, *//* DWG_TYPE_<UNKNOWN> = 0x37, */DWG_TYPE_LTYPE_CONTROL = 0x38,DWG_TYPE_LTYPE = 0x39,/* DWG_TYPE_<UNKNOWN> = 0x3a, *//* DWG_TYPE_<UNKNOWN> = 0x3b, */DWG_TYPE_VIEW_CONTROL = 0x3c,DWG_TYPE_VIEW = 0x3d,DWG_TYPE_UCS_CONTROL = 0x3e,DWG_TYPE_UCS = 0x3f,DWG_TYPE_VPORT_CONTROL = 0x40,DWG_TYPE_VPORT = 0x41,DWG_TYPE_APPID_CONTROL = 0x42,DWG_TYPE_APPID = 0x43,DWG_TYPE_DIMSTYLE_CONTROL = 0x44,DWG_TYPE_DIMSTYLE = 0x45,DWG_TYPE_VPORT_ENTITY_CONTROL = 0x46,DWG_TYPE_VPORT_ENTITY_HEADER = 0x47,DWG_TYPE_GROUP = 0x48,DWG_TYPE_MLINESTYLE = 0x49,DWG_TYPE_OLE2FRAME = 0x4a,DWG_TYPE_DUMMY = 0x4b,DWG_TYPE_LONG_TRANSACTION = 0x4c,DWG_TYPE_LWPOLYLINE = 0x4d, /* ?? */DWG_TYPE_HATCH = 0x4e,DWG_TYPE_XRECORD = 0x4f,DWG_TYPE_PLACEHOLDER = 0x50,DWG_TYPE_VBA_PROJECT = 0x51,DWG_TYPE_LAYOUT = 0x52,DWG_TYPE_PROXY_ENTITY = 0x1f2, /* 498 */DWG_TYPE_PROXY_OBJECT = 0x1f3, /* 499 *//* non-fixed types > 500. not stored as type, but as fixedtype */DWG_TYPE_ACDSRECORD = 0x1ff + 1,DWG_TYPE_ACDSSCHEMA,DWG_TYPE_ACMECOMMANDHISTORY,DWG_TYPE_ACMESCOPE,DWG_TYPE_ACMESTATEMGR,DWG_TYPE_ACSH_BOX_CLASS,DWG_TYPE_ACSH_EXTRUSION_CLASS,DWG_TYPE_ACSH_HISTORY_CLASS,DWG_TYPE_ACSH_REVOLVE_CLASS,DWG_TYPE_ACSH_SPHERE_CLASS,DWG_TYPE_ACSH_SWEEP_CLASS,DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA,DWG_TYPE_ARCALIGNEDTEXT,DWG_TYPE_ARC_DIMENSION,DWG_TYPE_ASSOC2DCONSTRAINTGROUP,DWG_TYPE_ASSOCACTION,DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY,DWG_TYPE_ASSOCDEPENDENCY,DWG_TYPE_ASSOCGEOMDEPENDENCY,DWG_TYPE_ASSOCNETWORK,DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM,DWG_TYPE_ASSOCPERSSUBENTMANAGER,DWG_TYPE_ASSOCPLANESURFACEACTIONBODY,DWG_TYPE_ASSOCVERTEXACTIONPARAM,DWG_TYPE_CAMERA,DWG_TYPE_CELLSTYLEMAP,DWG_TYPE_DATALINK,DWG_TYPE_DATATABLE,DWG_TYPE_DBCOLOR,DWG_TYPE_DETAILVIEWSTYLE,DWG_TYPE_DICTIONARYVAR,DWG_TYPE_DICTIONARYWDFLT,DWG_TYPE_DIMASSOC,DWG_TYPE_DOCUMENTOPTIONS,DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER,DWG_TYPE_EVALUATION_GRAPH,DWG_TYPE_FIELD,DWG_TYPE_FIELDLIST,DWG_TYPE_GEODATA,DWG_TYPE_GEOMAPIMAGE,DWG_TYPE_GEOPOSITIONMARKER,DWG_TYPE_HELIX,DWG_TYPE_IDBUFFER,DWG_TYPE_IMAGE,DWG_TYPE_IMAGEDEF,DWG_TYPE_IMAGEDEF_REACTOR,DWG_TYPE_LAYER_FILTER,DWG_TYPE_LAYER_INDEX,DWG_TYPE_LAYOUTPRINTCONFIG,DWG_TYPE_LIGHT,DWG_TYPE_LIGHTLIST,DWG_TYPE_MATERIAL,DWG_TYPE_MESH,DWG_TYPE_MLEADERSTYLE,DWG_TYPE_MULTILEADER,DWG_TYPE_NAVISWORKSMODELDEF,DWG_TYPE_NPOCOLLECTION,DWG_TYPE_OBJECTCONTEXTDATA,DWG_TYPE_OBJECT_PTR,DWG_TYPE_PERSSUBENTMANAGER,DWG_TYPE_PLOTSETTINGS,DWG_TYPE_POINTCLOUD,DWG_TYPE_RASTERVARIABLES,DWG_TYPE_RENDERENVIRONMENT,DWG_TYPE_RENDERGLOBAL,DWG_TYPE_MENTALRAYRENDERSETTINGS,DWG_TYPE_RAPIDRTRENDERENVIRONMENT,DWG_TYPE_RAPIDRTRENDERSETTINGS,DWG_TYPE_RTEXT,DWG_TYPE_SCALE,DWG_TYPE_SECTIONVIEWSTYLE,DWG_TYPE_SORTENTSTABLE,DWG_TYPE_SPATIAL_FILTER,DWG_TYPE_SPATIAL_INDEX,DWG_TYPE_SUN,DWG_TYPE_SUNSTUDY,DWG_TYPE_SURFACE, // or seperate subtypes? DXF has only SURFACEDWG_TYPE_PLANESURFACE,DWG_TYPE_EXTRUDEDSURFACE,DWG_TYPE_LOFTEDSURFACE,DWG_TYPE_REVOLVEDSURFACE,DWG_TYPE_SWEPTSURFACE,DWG_TYPE_TABLE,DWG_TYPE_TABLECONTENT,DWG_TYPE_TABLEGEOMETRY,DWG_TYPE_TABLESTYLE,DWG_TYPE_UNDERLAY, /* not separate DGN,DWF,PDF types */DWG_TYPE_UNDERLAYDEFINITION, /* not separate DGN,DWF,PDF types */DWG_TYPE_VISUALSTYLE,DWG_TYPE_WIPEOUT,DWG_TYPE_WIPEOUTVARIABLES,DWG_TYPE_XREFPANELOBJECT,// after 1.0 add new types here for binary compatDWG_TYPE_FREED       = 0xfffd,DWG_TYPE_UNKNOWN_ENT = 0xfffe,DWG_TYPE_UNKNOWN_OBJ = 0xffff,
} Dwg_Object_Type;

通用实体属性

typedef struct _dwg_object_entity
{BITCODE_BL objid; /*<! link to the parent */union{Dwg_Entity_UNUSED *UNUSED;Dwg_Entity_TEXT *TEXT;Dwg_Entity_ATTRIB *ATTRIB;Dwg_Entity_ATTDEF *ATTDEF;Dwg_Entity_BLOCK *BLOCK;Dwg_Entity_ENDBLK *ENDBLK;Dwg_Entity_SEQEND *SEQEND;Dwg_Entity_INSERT *INSERT;Dwg_Entity_MINSERT *MINSERT;Dwg_Entity_VERTEX_2D *VERTEX_2D;Dwg_Entity_VERTEX_3D *VERTEX_3D;Dwg_Entity_VERTEX_MESH *VERTEX_MESH;Dwg_Entity_VERTEX_PFACE *VERTEX_PFACE;Dwg_Entity_VERTEX_PFACE_FACE *VERTEX_PFACE_FACE;Dwg_Entity_POLYLINE_2D *POLYLINE_2D;Dwg_Entity_POLYLINE_3D *POLYLINE_3D;Dwg_Entity_ARC *ARC;Dwg_Entity_CIRCLE *CIRCLE;Dwg_Entity_LINE *LINE;Dwg_DIMENSION_common *DIMENSION_common;Dwg_Entity_DIMENSION_ORDINATE *DIMENSION_ORDINATE;Dwg_Entity_DIMENSION_LINEAR *DIMENSION_LINEAR;Dwg_Entity_DIMENSION_ALIGNED *DIMENSION_ALIGNED;Dwg_Entity_DIMENSION_ANG3PT *DIMENSION_ANG3PT;Dwg_Entity_DIMENSION_ANG2LN *DIMENSION_ANG2LN;Dwg_Entity_DIMENSION_RADIUS *DIMENSION_RADIUS;Dwg_Entity_DIMENSION_DIAMETER *DIMENSION_DIAMETER;Dwg_Entity_POINT *POINT;Dwg_Entity__3DFACE *_3DFACE;Dwg_Entity_POLYLINE_PFACE *POLYLINE_PFACE;Dwg_Entity_POLYLINE_MESH *POLYLINE_MESH;Dwg_Entity_SOLID *SOLID;Dwg_Entity_TRACE *TRACE;Dwg_Entity_SHAPE *SHAPE;Dwg_Entity_VIEWPORT *VIEWPORT;Dwg_Entity_ELLIPSE *ELLIPSE;Dwg_Entity_SPLINE *SPLINE;Dwg_Entity_3DSOLID *_3DSOLID;Dwg_Entity_REGION *REGION;Dwg_Entity_BODY *BODY;Dwg_Entity_RAY *RAY;Dwg_Entity_XLINE *XLINE;Dwg_Entity_OLEFRAME *OLEFRAME;Dwg_Entity_MTEXT *MTEXT;Dwg_Entity_LEADER *LEADER;Dwg_Entity_TOLERANCE *TOLERANCE;Dwg_Entity_MLINE *MLINE;Dwg_Entity_OLE2FRAME *OLE2FRAME;Dwg_Entity_HATCH *HATCH;Dwg_Entity_CAMERA *CAMERA;Dwg_Entity_GEOPOSITIONMARKER *GEOPOSITIONMARKER;Dwg_Entity_HELIX *HELIX;Dwg_Entity_IMAGE *IMAGE;Dwg_Entity_LIGHT *LIGHT;Dwg_Entity_LWPOLYLINE *LWPOLYLINE;Dwg_Entity_MULTILEADER *MULTILEADER;Dwg_Entity_PROXY_ENTITY *PROXY_ENTITY;Dwg_Entity_PROXY_LWPOLYLINE *PROXY_LWPOLYLINE;Dwg_Entity_SURFACE *SURFACE;Dwg_Entity_PLANESURFACE *PLANESURFACE;Dwg_Entity_EXTRUDEDSURFACE *EXTRUDEDSURFACE;Dwg_Entity_LOFTEDSURFACE *LOFTEDSURFACE;Dwg_Entity_REVOLVEDSURFACE *REVOLVEDSURFACE;Dwg_Entity_SWEPTSURFACE *SWEPTSURFACE;Dwg_Entity_TABLE *TABLE;Dwg_Entity_UNDERLAY *UNDERLAY;Dwg_Entity_WIPEOUT *WIPEOUT;Dwg_Entity_ARC_DIMENSION *ARC_DIMENSION;Dwg_Entity_MESH *MESH;Dwg_Entity_UNKNOWN_ENT *UNKNOWN_ENT;} tio;

实体

/**2D POLYLINE (15) entity*/
typedef struct _dwg_entity_POLYLINE_2D
{COMMON_ENTITY_POLYLINE;BITCODE_BS flag;BITCODE_BS curve_type;BITCODE_BD start_width;BITCODE_BD end_width;BITCODE_BT thickness;BITCODE_BD elevation;BITCODE_BE extrusion;
} Dwg_Entity_POLYLINE_2D;
/**ARC (17) entity*/
typedef struct _dwg_entity_ARC
{struct _dwg_object_entity *parent;BITCODE_3BD center;BITCODE_BD radius;BITCODE_BT thickness;BITCODE_BE extrusion;BITCODE_BD start_angle;BITCODE_BD end_angle;
} Dwg_Entity_ARC;/**CIRCLE (18) entity*/
typedef struct _dwg_entity_CIRCLE
{struct _dwg_object_entity *parent;BITCODE_3BD center;BITCODE_BD radius;BITCODE_BT thickness;BITCODE_BE extrusion;
} Dwg_Entity_CIRCLE;/**LINE (19) entity*/
typedef struct _dwg_entity_LINE
{struct _dwg_object_entity *parent;BITCODE_RC z_is_zero;BITCODE_3BD start;BITCODE_3BD end;BITCODE_BT thickness;BITCODE_BE extrusion;
} Dwg_Entity_LINE;

C语言库学习(四):用libredwg解析cad的dwg文件——第一版(qt)相关推荐

  1. cad dwg文件在线展示平台源代码cad格式 dwg文件解析

    cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码 支持windows,linux,mac,支持导入2004,2007,2010,2013版本dwg文件,图层控制, ...

  2. cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码

    cad dwg文件在线展示平台源代码cad格式 dwg文件解析,在线展示平台,全套代码 支持windows,linux,mac,支持导入2004,2007,2010,2013版本dwg文件,图层控制, ...

  3. 群晖Nas通过jellyfin搭建本地影音库详细全过程(四):解析jellyfin视频信息文件NFO

    前言,经过上述刮削之后,电脑里还剩下很多不知名的或者一些个人喜欢的科普视频等,这些视频也很多,难道都要导入tinyMediaManager一个个手动添加视频信息吗?应该看看tinyMediaManag ...

  4. python autocad库_在Python中加载AutoCad DWG文件

    在Python中需要渲染AutoCad DWG文件. 我的第一个问题是 1:-是否可以在python中渲染/加载dwg文件并在python环境中查看文件/图像?在 2:-我该怎么做?我尝试过使用arc ...

  5. JavaXml教程(四)使用DOM方式生成XML文件

    在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...

  6. C语言答案解析,C语言题库带详细讲解答案解析.doc

    C语言题库带详细讲解答案解析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  7. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  8. Andorid中使用Jsoup解析库解析XML、HTML、Dom节点---第三方库学习笔记(三)

    XML介绍: XML简介: XML,可扩展标记语言,标准通用标记语言的子集. 一种用于标记电子文件使其具有结构性的标记语言. 它可以用来标记数据.定义数据类型 是一种允许用户对自己的标记语言进行定义的 ...

  9. IOS学习:常用第三方库(GDataXMLNode:xml解析库)

    IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...

最新文章

  1. 2021年5个优秀人工智能框架
  2. php数据仓库数据分析,利用Apache+PHP+MySql构建数据仓库
  3. 01爬虫基本原理及Requests库下载
  4. vertical-align
  5. SpingMVC类型转换
  6. Spring+Ibatis集成开发实例
  7. Java---形参个数可变的方法
  8. JAVA https证书相关
  9. CSS 单词折行 word-wrap属性
  10. 董明珠回应口罩预约不到:没想到几十万人预约 正提高产能
  11. 非广告,运维派送红包,参与就有!
  12. ubuntu安装jre
  13. python环境window系统安装pyHook3
  14. 如何给光耦输入端限流
  15. 2021秋招总结(器件方向转行数字IC设计)
  16. 程序员都需要会的JVM调优总结 -Xms -Xmx -Xmn -Xss,附idea配置实战(程序员必学)
  17. 简单控件学习——Lable/HyperLink
  18. 高新计算机考试试题ps,最新版计算机高新考试ps第1单元1-8.pdf
  19. 【iMessage苹果相册推日历真机推】改成vue的MVVM模式现在前端趋向是去dom化
  20. 彩色图像转灰度图像原理python

热门文章

  1. 计算机辅助设计二维三维图纸绘制AutoCAD 2022中文
  2. 脚踩脸书,锤趴Google,“国产巨头”疫情期间狂吸金!
  3. 腐蚀rust研究台抽奖_KUYH | Rust腐蚀7月5日更新内容
  4. 推出 RxR:多语言指令跟随导航基准数据集
  5. 少儿创意学编程(Scratch基础篇):第1课——摇滚乐队
  6. 是否要规律作息的思考
  7. python 科幻片采集
  8. 新手教程:怎样取出iPhone里的SIM卡
  9. 获得周公解梦数据接口java_基于JAVA的免费周公解梦接口调用代码实例
  10. mysql can#039;t create_网络编程安装mysql-8.0.19-winx64遇到的问题:Can#039;t create directory #039;xxxx\Databa...