LibreDWG开源库生成ARM64架构下的动态库

C语言库学习(四):用libredwg解析cad的dwg文件——第一版(qt) 开始 首先下载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-w... 阅读详情

本篇文章主要介绍了使用LibreDWG开源库生成ARM64架构下的动态库,并将这个动态库单独复制出来,进行程序构建。然后讲了一个我工程中用到的案例,dwg2dxf文件的转换,并打包成一个新的动态库给安卓端使用,话不多说直接开始:

如果不使用ARM架构,按照官方的文档来即可,跳过1、3、4,并且5中的第二步输入./configure就行

1.先安装ARM64 交叉编译工具链

sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

2.再下载LibreDWG官方库,并进入到libredwg文件夹中

git clone https://git.savannah.gnu.org/git/libredwg.git
cd libredwg

3.创建一个交叉编译工具链文件。例如,创建一个名为 aarch64-toolchain.cmake 的文件,并加入以下内容:

# aarch64-toolchain.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

# specify the cross compiler
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

 4.LibreDWG 的 configure 脚本可能没有直接支持交叉编译的选项。在这种情况下,你需要修改环境变量以指定交叉编译工具链,在命令行输入:

export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++

 5.紧接着在命令行输入:

sh ./autogen.sh
./configure --host=aarch64-linux-gnu
make
make check
sudo make install

./configure --host=aarch64-linux-gnu  

这个选项是用于交叉编译的,它指定了目标架构为 ARM64(aarch64)。这个选项并不是 LibreDWG 文档中明确说明的,但它是常见的交叉编译配置方法。

6.进入路径/usr/local/lib下寻找libredwg.so.0.0.13(2024/08/16,或许更新后不一定是0.0.13,看具体情况选择),该目录下还有libredwg.so和libredwg.so.0,不用管是一个链接之类的。将其拷贝到你的工作目录的lib下,并改名为libredwg.so.0(注意和前一个不是同一个文件)如图:

以上内容就是生成LibreDWG开源库ARM64架构下的动态库的过程了,接下来的内容为使用LibreDWG的库,是一个小小的案例,主要实现了dwg2dxf文件的转换

首先我们先使用正常的流程,不要构建ARM框架的库
7.接下来回到libredwg文件夹下,进入programs文件夹下,选择你要用的功能,这里我使用了dwg2dxf.c这个功能,将这个文件拷贝到我们的工作目录src文件夹下,阅读其中的代码内容,去掉不必要的部分,可以使用GPT。如图:


8.紧接着就是我们常用的CMakeLists编程了,这里省略过程,写一个main.c函数,以下部分为我实际工作中的案例:
调用dwg2dxf.c文件里的函数

int dwg_to_dxf(const char *filename_in, int minimal, int binary, int overwrite);


 main.c中的内容


9.然后就是用CMakeLists进行编译,这个时候会提示缺少很多的头文件或者其他文件,这些文件我们在libredwg文件下进行搜索,找到后拷贝到我们工程中相应的文件夹下,我这里是include文件夹

10.最后再一次编译生成了可执行程序,运行该程序,执行成功

 11.至于安卓端的交叉编译,可以参考我的另一篇博客
Ubuntu C++(Cmake版) X86 -> ARM64 Dockcorss 交叉编译使用过程_arm编译c++-优快云博客

windows10 CAD解析库libredwg的调用 书接上回,这里主要介绍libredwg库的调用,具体安装教程参考:windows10 CAD解析库libredwg安装记录。众所周知,我们已经生成静态库libredwg.a。但是在windows中无法被vs调用,那用什么调用呢?这里我们采用QT来编写c程序进行调用。众所周知,QT是一个跨平台的语言,而我们编译的libredwg库是使用GUN编译的,所以只能在linux上进行调用,此时可以使用QT来解决这个跨平台问题。 Windows10上QT的安装教程:win10下,安装Qt5.9.7(一) 一、配置C 阅读详情

相关推荐

基于开源库libreDWG+Java实现AutoCad格式DWG转DXF

最近在做基于AutoCAD图纸的自动入库,遇到了一个问题,DXF图纸的解析入库非常简单,但是支持DWG的解析的开源库或框架非常少。看到网上很多网友,都在想将DWG转为DXF,再进行后续操作。我本来想着这很简单,结果研究了两条,这块可用的资料确实少之又少。偶尔看到两行代码,仔细看一下,都是基于商用的框架做的。最终实现了,虽然不完美,在这里也和大家分享一下。 DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好的特点,但占用的空间较大;二进制格式则占用的空间小、读取速

做GIS梦的人 4668

DWG格式解析库---libredwg 快速使用(Win10 + QT)

libredwg 是什么         LibreDWG 是 github 上一个开源的 C 库,用于读写 DWG 文件。这个程序是 GNU 项目的一部分,在 GNU 的支持下发布。它是国外大牛开发的,是目前我觉得对 DWG 支持最好的一个库(2000版本以后的DWG文件都支持,且稳定),现在还在持续更新与维护。 libreDWG的地址 目的       &nbsp

大雾博客 2万+

Android上交叉编译libredwg详解:NDK工具链与JNI封装实战

在移动端处理DWG文件,绕不开的是文件解析与跨平台编译问题。交叉编译作为嵌入式与移动开发中的基础技术,允许开发者在x86宿主机上生成ARM架构可执行文件,而Android NDK正是这一过程的关键桥梁。通过NDK自带的Clang工具链和bionic库,开发者能够将C/C++库无缝适配到Android运行时,进而利用JNI封装实现Java层与底层库的高效交互。这套技术路径不仅适用于CAD图纸的离线解析,也广泛服务于图像处理、音视频解码等需要高性能原生库的场景。理解configure参数、ABI策略和依赖链构建

weixin_34297704的博客 436

探秘LibreDWG:一个开源的DWG文件读写库

探秘LibreDWG:一个开源的DWG文件读写库 项目地址:https://gitcode.com/gh_mirrors/li/libredwg 是一个强大的开源项目,旨在提供对AutoCAD DWG文件格式的读取和写入功能,无需依赖任何商业软件。这篇技术文章将深入解析该项目的技术特性,应用场景,并解释为何它值得你的关注和使用。 项目简介 LibreDWG是一个C语言编写的库,设计目标是实现高效、...

gitblog_00079的博客 6593

Libredwg在Android上的交叉编译与JNI集成实践

交叉编译是移动端复用桌面级C/C++库的关键技术,尤其在需要解析DWG等专业格式时。Android NDK提供完整的工具链与sysroot,通过configure与make可构建目标平台的动态库(.so)。掌握JNI桥接后,可在App中直接调用Libredwg的API,实现图纸信息提取、格式转换等工程应用。本文以Libredwg为例,梳理从NDK配置、依赖处理到链接打包的完整流程,并总结常见编译问题,为Android上集成复杂原生库提供可复用的实践路径。

weixin_34216614的博客 344

Libredwg Android交叉编译实践:从NDK配置到JNI集成

交叉编译是移动端复用C/C++库的常见手段,尤其在Android原生开发领域,NDK工具链的配置直接影响第三方库的移植效率。理解configure参数、ABI选择与动态库链接原理,是完成跨平台构建的关键。通过交叉编译,开发者可以将成熟的桌面级开源库迁移到移动端,实现离线解析、本地计算等能力,从而降低对服务端的依赖。聚焦Libredwg这一DWG解析库在Android平台的编译实践,从环境准备、configure配置到JNI桥接,完整梳理了将C库集成至Android Studio工程的方法,并总结了常见错误排

weixin_29192365的博客 337

【亲测免费】 探索自由的未来:LibreDWG —— 开源DWG文件格式实现库

LibreDWG是一个用于读取和编写DWG文件的免费C语言库。作为GNU项目的一部分,并在GNU的授权下发布,它遵循GPLv3许可证(或更高版本)。DWG是AutoCAD自70年代以来为其CAD应用程序创建的原生文件格式。现在,LibreDWG作为这个专有格式的一个自由软件替代品,旨在促进更多贡献者参与开发。 ## 项目技术分析 LibreDWG从LibDWG分支而来,原因是其采用Espera

gitblog_00935的博客 2833

Android交叉编译Libredwg:从NDK工具链到JNI集成全流程

在移动端处理DWG这类私有CAD格式时,开发者常面临商业SDK授权成本高、离线解析难落地的问题。交叉编译技术允许将C/C++库从一个平台迁移到另一个平台,而Android NDK提供了Bionic C库与系统根目录(sysroot),是构建原生动态库的基础。通过合理配置configure脚本、利用Clang工具链,可将开源库打包为.so文件,再通过JNI桥接Java层调用本地接口,实现DWG文件的读取与解析。该方案适用于移动看图、工程协作等离线场景,既能控制成本,又能保留核心解析能力。本文以Libredwg

weixin_29168813的博客 285

探索LibreDWG:开源的DWG文件格式实现

LibreDWG是一个自由的C语言库,用于读取和写入DWG文件。作为GNU项目的一部分,它遵循GNU通用公共许可证版本3(或更高版本)。DWG文件格式起源于70年代,用于新兴的CAD应用程序,目前是AutoCAD的本地文件格式。LibreDWG项目源于对LibDWG使用Esperanto语言的不满,因此转向使用英语,旨在吸引更多贡献者。 ## 项目技术分析 LibreDWG的核心功能包括DWG

gitblog_00965的博客 1263

Android端DWG解析:libredwg交叉编译与JNI封装实战

在移动端处理工程图纸格式,往往需要复用成熟的C/C++库。NDK交叉编译技术正是连接底层C库与Android系统的关键桥梁,它通过工具链配置、环境变量设定与目标架构编译,将原生库转换为Android可用的静态或动态库。JNI则作为Java层与Native层之间的接口,让Android应用能够直接调用C库的解析能力。这一技术路径广泛应用于工程看图、离线文档处理、数据解析等场景。本文以工程图纸解析为例,详细讲解如何将libredwg这一开源C库通过NDK工具链交叉编译为Android静态库,并封装成JNI接口供

weixin_34416754的博客 556

DWG文件开发包LibreDWG.zip

GNU LibreDWG 是一个免费开源的 C 库用来处理 DWG 文件,这是 OpenDWG 的免费替换版本。DWG 是 AutoCAD 原生的文件格式。 GNU LibreDWG 基于 LibDWG, 由 Felipe Castro 开发. 标签:LibreDWG

CAD—dwg格式解析库:libdxfrw和libredwg

最近在搞dwg格式的数据读写以及转换工具,通过查找比对,主要研究了两个开源库,分别是libdxfrw和libredwg。 1、libdxfrw:是一个开源的c++库,可以读写ascii和二进制格式的DXF文件。(github地址:https://github.com/codelibs/libdxfrw) 2、libredwg: 这里是引用 ...

纨笔记事的博客 3万+

Libredwg的源码Linux编译生成的动态库so和头文件

Libredwg的源码Linux/安卓编译生成的动态库so和头文件 -rwxr-xr-x. 1 root root 10987 Sep 5 03:46 alive.test -rwxr-xr-x. 1 root root 18728 Sep 5 03:54 dwg2dxf -rwxr-xr-x. 1 root root 32272 Sep 5 03:54 dwg2SVG -rwxr-xr-x. 1 root root 14112 Sep 5 03:54 dwgbmp -rwxr-xr-x. 1 root root 99416 Sep 5 03:54 dwggrep -rwxr-xr-x. 1 root root 13568 Sep 5 03:54 dwglayers -rwxr-xr-x. 1 root root 14032 Sep 5 03:54 dwgread -rwxr-xr-x. 1 root root 19650400 Sep 5 03:54 libredwg.so

【亲测免费】 推荐开源项目:LibreDWG——自由的DWG文件处理库

LibreDWG,一款致力于提供自由、开源解决方案的C语言库,专注于读写DWG文件。该项目隶属于GNU计划,采用GNU GPL v3许可协议(或后续版本)。DWG文件格式,自70年代起服务于计算机辅助设计(CAD),现为AutoCAD的主要文件格式。LibreDWG从LibDWG分支出来,以英语为主要开发语言,旨在吸引更多贡献者,推动技术共享。 ## 项目技术分析 LibreDWG具备全面的D

gitblog_00972的博客 2658

Libredwg androidstudio交叉编译生成的动态库so

Libredwg的源码通过Android STudio交叉编译生成的库,下载下来就能直接用,省去了自己编译,修改报错,不兼容或者环境的问题。 arm64-v8a/ armeabi-v7a/ x86/ x86_64/ 如果你需要原始的可自己编译的工程可以私信找我,我免费发个你,

windows10 CAD解析库libredwg安装记录

因为项目需要解析CAD,网上搜了下C++解析库中目前libredwg还在更新,且支持最新2018版本的CAD图纸,所以安装试试。 一、安装环境配置 在windows10上安装libredwg前需要安装cygwin工具,并需要安装相关的依赖库。 1、安装cygwin 参考链接:Windows:安装cygwin教程 2、相关依赖库 make autoconf automake lib...

wxplol的博客 8469

tesseract-ocr的字库学习步骤(训练自己的文库),关于ocr的对图片的解析,包括tesseract的安装(史上最全)

tesseract-ocr的字库学习步骤(训练自己的文库) 简介:在网上看了很多案列。都不是很完整。然后自己用了一天时间进行整理,第一次写文章,希望对大家有帮助。 一、安装tesseract 下载地址https://github.com/UB-Mannheim/tesseract/wiki 1.点击下面下载的这个进行运行(安装的时候有点慢) 2.点击next 3.I accept the terms of the License Agreement前的复选框打勾,点击Next。 4.Install f

HAC12的博客 2229

LibreDWG完全指南:免费DWG文件处理终极解决方案

LibreDWG是一个强大的开源C库,专门用于读取和写入AutoCAD DWG文件格式。作为GNU项目的一部分,它提供了完整的DWG文件处理能力,让用户能够在不依赖商业软件的情况下处理CAD设计文件。🚀 ## 什么是LibreDWG? LibreDWG是DWG文件格式的免费实现,支持从R1.4到最新版本的DWG文件读取,以及R1.4到R2000版本的写入功能。这个项目最初是从LibDWG分叉

gitblog_00169的博客 1045

centos7下100T存储扩容(LVM)至150T

查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2

tiyager的博客 1025

Cesium实战:如何在前端直接渲染TIFF影像(附完整代码与避坑指南)

本文详细介绍了如何在前端利用Cesium直接加载和渲染TIFF影像的完整技术方案。针对TIFF格式的地理影像数据,文章提供了从文件解析、坐标转换到像素处理与Cesium集成的全流程代码实现,并分享了性能优化与常见问题的避坑指南,帮助开发者高效实现三维地理可视化。

weixin_29290947的博客 315

CAD—dxf & dwg格式解析库

最近研究了一下CAD数据自动化建模的相关内容,涉及到dwg格式的数据读写以及转换工具,通过查找比对,主要研究了两个开源库,分别是libdxfrw和libredwg。 dwg格式的数据是CAD内部工作格式,以二进制方式存储,格式不开源。格式设计规范参照dwg格式设计规范:(https://blog.youkuaiyun.com/Caoyang_He/article/details/80343945) 1、libdxfrw:是一个开源的c++库,可以读写ascii和二进制格式的DXF文件。支持R14 到V2015版本...

大鹏的blog 7753

从零到一:RJ71EN71 ModbusTCP配置的避坑指南与实战技巧

本文详细解析三菱RJ71EN71模块的ModbusTCP配置全流程,涵盖GX Works3参数设置、地址映射、通信调试等核心环节。针对工业环境中常见的IP冲突、软元件分配错误、通信超时等高频问题提供实战解决方案,帮助工程师快速构建高可靠性通信网络,避免项目延期风险。

zzz56的博客 331
上一篇: Eigen的使用
下一篇: Linux搜狗拼音按照官方操作没有用的看过来
Lelin_8013
博客等级 码龄6年 423粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值