精易论坛

标题: 【炫语言】二维码生成(学习如何封装C++开源库) [打印本页]

作者: hxznhf    时间: 2024-9-25 22:01
标题: 【炫语言】二维码生成(学习如何封装C++开源库)
在炫语言里面,遇到没有的模块怎么办,就需要我们自己动手了,我们就来学习下如何把C++开源库封装成自己的模块。





上面是封装后的调用效果,下面讲讲如何实现:


ZXing是一个强大的条形码开源库,支持超多类型的条码生成与识别,支持很多平台和语言,ZXing-cpp就是针对C++的版本,我们需要自己编译开源项目得到它的静态库和动态库。

我知道对于易语言菜鸟想要自己编译一个CPP开源库简直是噩梦,但是只要你认真学习,你就会发现依然是噩梦,不过微软的VS提供了一个稍微简单一点的工具(vcpkg),可以使用它帮你编译微软已经收录过的开源CPP项目(主流开源库基本都有),如果你电脑上安装了VS和其中的vcpkg组件,你只需要创建一个文件夹,然后在当前目录运行CMD,输入这个三行命令即可帮你编译好这个开源库:

[Shell] 纯文本查看 复制代码
vcpkg  new --application
vcpkg add port zxing-cpp
vcpkg install



这三个命令负责创建一个编译配置、添加一个库、执行安装,更多细节问题需要更深入的学习。




我使用的VSCode来开发:
1、首先创建一个C++头文件,按下图所示定义我们的模块基本信息,然后定义一个C++类,这个类将被炫语言的IDE解析,变成可调用的模块。
注:(如果其中的各种名称没有添加注释和别名,在炫语言中就是原来的英文名称直接使用,如果有中文别名,我们也能直接使用中文名称)


代码说明:代码中用到的 CXTextA CXBytes  是炫语言中的文本型和字节集类型。


然后我们再创建一个CPP文件编写具体的生成二维码功能代码:
这里是部分代码,这些代码主要是开源库本身提供的例子和AI提供的帮助,我们自己需要解决的主要是如何把炫语言自己的文本型、和字节集参数传入进去和接受结果。


之前模块定义中这三行注释目的:告诉IDE我们引用了炫语言基础模块(文本型、字节集支持等),参与编译的CPP文件,参与静态链接的库
//@依赖  module_base.h

//@src "module_zxing.cpp"

//@lib "ZXing.lib"



通过这个例子,我想说的是炫语言对于C++开源库的封装是比较容易的(对于有C++基础的用户),不需要像火山一样进行复杂的转换,以至于很多会C++的易友也不愿意给火山封装库。很多易语言用户会问,我都会C++了,那我还来研究你这玩意干啥,我想说炫语言是一个简化的C++开发工具,在有足够丰富的模块情况下,代替VS来开发C++项目是很轻松的。即使我会C++,有更快捷的工具我为什么不可以使用呢?


易语言没落也是没办法,作者也不管了,作为易友只能被迫寻找其它更好的开发工具,不然咋继续玩中文编程呢,同时想告诉大家不管选择什么编程工具,不要老是带着易语言那种思维,什么都要简化到极致,有时候简化也是一种限制,易语言就是各种简化,导致一些本来好实现的东西却反而需要更多的代码来实现。(当然如果有一种语言,他不仅简化,而且能解决所有问题,我肯定选它),但是这可能吗?








注:模块还没写完,后续会上传IDE在线模块中(下载后的模块也是源代码形式)






作者: 神一样的人猫腻    时间: 2024-9-25 22:17
刚好需要,感谢~
作者: 呵呵仙    时间: 2024-9-25 22:54
先感谢!!虽然我喜欢用嵌入代码写东西,看来得下点感情去用用VS了!!
作者: 呵呵仙    时间: 2024-9-25 22:57
老大,知道这个功能如何实现吗?谢谢!!
http://bbs.xcgui.com/forum.php?m ... ;tid=315&extra=
作者: hxznhf    时间: 2024-9-25 23:01
呵呵仙 发表于 2024-9-25 22:57
老大,知道这个功能如何实现吗?谢谢!!
http://bbs.xcgui.com/forum.php?mod=viewthread&tid=315&extra= ...

项目目录下的lib,直接写相对路径,外部的只能绝对路径
作者: kenan236    时间: 2024-9-25 23:18
不知道好不好用
作者: 炫彩界面库    时间: 2024-9-25 23:22
感谢大佬分享
作者: bianyuan456    时间: 2024-9-25 23:26
已经顶贴,感谢您对论坛的支持!
作者: renhe2018    时间: 2024-9-26 06:38
很厉害啊。我的个天。
作者: ctry78985    时间: 2024-9-26 08:06
感谢分享
作者: perfectmyt    时间: 2024-9-26 09:51
你们炫语言没有自己的论坛吗?
作者: 一指温柔    时间: 2024-9-26 10:17
感谢分享
作者: 770935901    时间: 2024-9-26 10:28
感谢分享
作者: jtucar    时间: 2024-9-26 10:38
感谢分享
作者: wjswzj0    时间: 2024-9-26 15:33
感谢分享,很给力!~
作者: 一粒红尘    时间: 2024-9-26 16:12
出视频教程吧
作者: 祭祀雨人    时间: 2024-9-26 16:54
我没记错的话,zxing好像在一些其他电脑上不能直接用,好像需要个C++库
作者: hxznhf    时间: 2024-9-26 17:00
祭祀雨人 发表于 2024-9-26 16:54
我没记错的话,zxing好像在一些其他电脑上不能直接用,好像需要个C++库

写漏了,还需要stb_image库,只有头文件,直接引用就好了
作者: 没事瞎琢磨    时间: 2024-9-26 17:01
出视频 这说得不清楚 没法学
作者: hxznhf    时间: 2024-9-27 09:02
没事瞎琢磨 发表于 2024-9-26 17:01
出视频 这说得不清楚 没法学

视频教程录起来好麻烦
作者: 396384183    时间: 2024-9-27 10:18

感觉很不错呦。
作者: dgyh    时间: 2024-9-27 12:54
好用吗
作者: happyweeks365    时间: 2024-9-27 17:23
666666666666666666666
作者: 吃泡面加不起蛋    时间: 2024-9-28 14:49
完全看不懂,等看懂了估计都会c++了
作者: 独立c    时间: 2024-10-1 16:58
吃泡面加不起蛋 发表于 2024-9-28 14:49
完全看不懂,等看懂了估计都会c++了

偷偷告诉你,可以用gpt




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4