linux g++编译dxf文件C++解析库dxflib

DXFLIB是一个用于读取和写入AutoCAD(R)DXF文件的开源C++库。它提供读取和写入许多基本实体的功能,以及有关层和块的信息。来自QCAD的作者。
最新版本下载地址:https://www.ribbonsoft.com/en/dxflib-downloads
旧版本下载:https://sourceforge.net/projects/dxflib/
使用手册:http://www.ribbonsoft.com/dxflib/manual.pdf中文翻译:https://www.xuebuyuan.com/2019623.html我们下载当前版本:3.17.0

下载解压:

其中,提供了qt creator项目文件,方便使用qt进行构建。src中存放源码,examples中包含三个例子。

在linux发行版中,如果安装了qt,可直接打开dxflib.pro进行构建,如果没有,则使用g++命令行来进行构建。
使用g++编译dxflib

1 cd ./src
2 ls -l
3 g++ -c dl_dxf.cpp -o dl_dxf.o
4 g++ -c dl_writer_ascii.cpp -o dl_writer_ascii.o
5 ar -rsc dxflib.a dl_dxf.o dl_writer_ascii.o
6 ls -l


至此,静态库dxflib.a编译成功!
使用dxflib.a
readwrite例子中直接将dxflib的源码包含进去了,可以不用链接dxflib.a直接编译,当然也可以链接。

cd ../examples
ls
cd ./readwrite
ls
g++ *.cpp ../../src/dxflib.a -o readwrite -I ../../src/
ls
./readwrite demo.dxf

同样的另外两个写dxf文件的例子

cd ../writedimension
ls
g++ *.cpp ../../src/dxflib.a -o writedimension -I ../../src/
ls./writedimension

在当前目录下写生成dimension.dxf文件,如果文件存在,则覆盖重写。

类似地,在当前目录下写生成hatch.dxf文件,如果文件存在,则覆盖重写。

QCAD是一个免费的开源应用程序,基于dxflib库,用于二维(2D)的计算机辅助制图(CAD),可以算是AutoCAD软件的一个替代品。

dxflib库examples中用到的dxf文件,用QCAD软件打开:



原文地址:https://www.cnblogs.com/MakeView660/p/12321935.html

时间: 2024-10-13 22:18:05

linux g++编译dxf文件C++解析库dxflib的相关文章

linux下编译qt5.6.0静态库——configure配置

 随笔 - 116  文章 - 4  评论 - 7 linux下编译qt5.6.0静态库--configure配置 linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberry选项: Android 选项: 生成makefile 遇到链接检查失败的情况 生成makefile后进行编译 编译时的错误 多重定义'QT_MODBUS()'和'QT_MODBU

g++编译cpp文件

gdb调试c程序打不到断点的原因可能是编译c文件的时候没有加-g选项,-g选项是编译加debug信息的,不加是打不到断点的 g++编译cpp文件 g++ -g -c *.cpp       编译 g++ -g -o exec *.o   链接 或 g++ *.cpp -o exec g++编译生成.a 静态库文件,.so为动态库 gcc *.cpp -lcp-demangle -o exec 选项 -l (ell) 通过添加前缀 lib 和后缀 .a 将跟随它的名字变换为库的名字 libcp-d

解决 linux下编译.sh文件报错 “[: XXXX: unexpected operator” 问题

本人经常在linux通过编译 .sh文件来生成工程,之前一直都没问题,代码一直都没变,但是今天编译的时候,却提示错误: 然后我就表示很费解,查看我的.sh文件,其中有很多的[] ,都是这些报错,可是之前一直没问题. 后来发现,因为ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多. 修改sh默认连接到bash的一种方法: sudo

linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101#comments 自己测试的结果: [1]使用windows 下的编辑工具 新建文件doc2unix.sh #!/usr/bin/env bash # test PID=$(ps -aef | grep nginx | grep -v grep | grep master |awk '{print

解决Linux下编译.sh文件报错 “[: XXXX: unexpected operator”

本人经常在Linux通过编译 .sh文件来生成工程,之前一直都没问题,代码一直都没变,但是今天编译的时候,却提示错误: 然后我就表示很费解,查看我的.sh文件,其中有很多的[] ,都是这些报错,可是之前一直没问题. 后来发现,因为Ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多. 修改sh默认连接到bash的一种方法: sudo

linux下动态链接库.so文件 静态链接库.a文件创建及使用

转摘网址为:http://www.cnblogs.com/fengyv/archive/2012/08/10/2631313.html Linux下文件的类型是不依赖于其后缀名的,但一般来讲:    .o,是目标文件,相当于windows中的.obj文件    .so 为共享库,是shared object,用于动态连接的,和dll差不多    .a为静态库,是好多个.o合在一起,用于静态连接    .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息.可以用如下命令

g++ 编译c文件

//编译c文件为.o文件 g++ -c virify.c //打包.o文件为.a静态库文件 ar crv libandroid_um36_virify.a virify.o //将静态库.a文件编译进.c文件,同时编译用到的ssl库函数 g++ main.c libandroid_um36_virify.a -lssl -lcrypto -o main

Linux中编译C文件

C/C++程序编译的过程 预处理,展开头文件,宏定义,条件编译处理等.通过gcc -E source.c -o source.i或者cpp source.c生成. 编译.这里是一个狭义的编译意义,指的是将预处理后的文件翻译成汇编代码的过程.通过gcc -S source.i生成.默认生成source.s文件. 汇编.汇编即将上一步生成的汇编代码翻译成对应的二进制机器码的过程.通过gcc -c source.s来生成source.o文件. 链接.链接是将生成目标文件和其引用的各种符号等生成一个完整

Linux下编译Android平台的ffmpeg库

在Linux平台下编译要方便些,我这里使用的环境是openSUSE,用Ubutunu也是一样的. 首先你需要Android-NDK 和ffmpeg源码,不同的版本里的文件结构有所差别,编译环境也有所不同.我这里使用的是以下两个版本: android-ndk-r8-linux-x86.tar.bz2 ffmpeg-0.7.17.tar.gz 1. 解压 android-ndk-r8-linux-x86.tar.bz2 cd ~ tar xvf android-ndk-r8-linux-x86.ta