WPS C++ 二次开发环境搭建与Demo调试实战

WPS C++ 二次开发环境搭建与Demo调试实战 1. WPS C二次开发环境搭建全攻略第一次接触WPS二次开发时我也被各种依赖问题折腾得够呛。记得有次为了搞定GLIBC版本问题差点把虚拟机搞崩。不过别担心跟着我的步骤走能避开90%的坑。先说说整体思路我们需要准备Linux环境、安装WPS办公软件、配置Qt开发工具最后才是跑通Demo。这里强烈建议用CentOS 7虚拟机操作就算玩坏了也能快速回滚。我用的VMware Workstation 16 CentOS 7.9最小化安装分配了4核CPU和8GB内存实测完全够用。2. 环境准备阶段2.1 系统基础配置刚装好的CentOS需要先装些基础工具sudo yum install -y epel-release sudo yum groupinstall -y Development Tools sudo yum install -y qt5-qtbase-devel qt5-qttools-devel这里有个细节要注意Qt5的版本最好用5.9.x系列太高或太低都可能出问题。我之前用Qt5.15就遇到过界面库不兼容的情况。安装完成后记得验证qmake -v # 应该输出类似 QMake version 3.1 的信息2.2 WPS安装避坑指南官网下载的RPM包安装时90%会遇到依赖缺失。除了常见的libXss还可能要处理这些sudo yum install -y libXrender libXrandr libXcursor libXi libXtst如果安装时提示libpng12.so.0 not found这是WPS的老毛病了wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libpng12-1.2.50-10.el7.x86_64.rpm sudo rpm -ivh libpng12-1.2.50-10.el7.x86_64.rpm3. GLIBC版本问题终极解决方案3.1 安全升级GLIBC看到GLIBC_2.18报错千万别慌按这个安全方案操作mkdir ~/glibc-build cd ~/glibc-build wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz tar zxvf glibc-2.18.tar.gz cd glibc-2.18 mkdir build cd build ../configure --prefix/home/yourname/glibc-2.18-build make -j$(nproc) make install关键技巧来了不要直接替换系统GLIBC而是用LD_LIBRARY_PATH指定export LD_LIBRARY_PATH/home/yourname/glibc-2.18-build/lib:$LD_LIBRARY_PATH /opt/kingsoft/wps-office/office6/wps这样即使出问题重启就能恢复。我后来把这个写成了启动脚本#!/bin/bash export LD_LIBRARY_PATH/home/yourname/glibc-2.18-build/lib:$LD_LIBRARY_PATH exec /opt/kingsoft/wps-office/office6/wps $3.2 字体缺失问题除了常见的symbol字体还可能缺这些微软雅黑中文显示方框Times New Roman英文排版错乱我的解决方案是建个专用字体目录sudo mkdir /usr/share/fonts/wps-fonts # 把缺失字体都放这里 sudo fc-cache -fv4. Demo工程实战调试4.1 源码获取与准备官方git仓库有时会更新建议用这个镜像git clone https://gitee.com/mirrors_wps/wps_cpp_demo.git cd wps_cpp_demo/cpp工程文件需要微调修改wpsapi.pri中的INCLUDEPATH指向你的WPS安装目录检查LIBS参数是否包含-lwpsapi4.2 Qt Creator配置技巧打开工程后重点检查构建套件选Desktop Qt 5.9.x在项目设置中添加环境变量LD_LIBRARY_PATH/opt/kingsoft/wps-office/office6运行配置里设置工作目录为demo所在路径常见编译错误解决方案undefined reference to WPSAPI_xxx → 检查libwpsapi.so路径GLIBCXX_3.4.20 not found → 执行sudo yum install libstdc-devel5. 进阶开发指南成功运行Demo后可以尝试这些扩展自定义插件开发class MyWpsPlugin : public QObject, public KWPSApplicationInterface { Q_OBJECT Q_INTERFACES(KWPSApplicationInterface) public: void OnClick() override { qDebug() Button clicked!; } };事件监听示例connect(wpsApp, KWPSApplication::DocumentOpen, [](const QString path){ qDebug() Opened: path; });调试技巧用gdb附加进程gdb -p $(pidof wps)查看WPS日志tail -f ~/.kingsoft/logs/wps.log记得定期备份你的开发环境我吃过亏才明白虚拟机快照有多重要。遇到奇怪问题可以先清理配置rm -rf ~/.config/Kingsoft