【CGAL】CGAL Demo 的编译过程记录

【CGAL】CGAL Demo 的编译过程记录,第1张

CGAL Demo的编译过程记录

文章目录
  • 一.先决条件
  • 二.LibQGLViewer编译
    • 1.生成动态库
    • 2.尝试编译示例教程 sinpleViewer
    • 3.编译qglviewerplugin
    • 4.放置.dll文件至指定位置。



  • 三、CGAL Demo的编译

  • 总结


一.先决条件
  • vcpkg安装CGAL
  • LibQGLViewer
  • 下载CGAL的实例程序,我已下载CGAL5.3

提示:以下是本篇文章正文内容,下面案例可供参考

二.LibQGLViewer编译 1.生成动态库

下载LibQGLViewer2.6.3.

  1. 使用VS打开.Pro文件

  2. 添加OpenGL32.lib,glu32.lib到QGLViewer链接器中。



  3. 右键QGLViewer,仅用于项目,仅生成QGLViewer

  4. 在Debug模式下,在文件目录QGLViewer中生成前缀为QGLVIewerd2.XXX的如下几个文件

  5. 在Release模式下,在文件目录录QGLViewer中生成前缀为QGLVIewerd.XXX的如下几个文件

2.尝试编译示例教程 sinpleViewer
  1. 同样 仅用于生成 仅生成项目sinpleViewer,直接生成时出错,提示如下错误。



    error LNK2019: 无法解析的外部符号 __imp_glBegin,函数 “protected: virtual void __cdecl Viewer::draw(void)” (?draw@Viewer@@MEAAXXZ) 中引用了该符号
    原因是没有添加glu32.lib,opengl32.lib到附加连接器中,添加即可。



  2. 同样,如果在第一节中编译QGLViewer时并没有同时编译Debug模式和Release模式,再次编译时出错,提示找不到QGLViewer2.lib,这是因为在附加链接器中,默认存在QGLVeiwer2.lib,而仅仅在Debug模式下编译是获得的是QGLViewerd2.lib等。


    因此,两种方法:

    • 先完成QGLViewer的编译,包括Debug模式和Release模式。


    • 在Debug模式编译时将附加连接器中QGLViewer2.lib改为QGLViewerd2.lib。


3.编译qglviewerplugin

有了 sinpleViewer 的经验后,编译qglviewerplugin本因就轻松多了,但是还是出现了一些问题。


  1. 同样,添加OpenGL32.lib,glu32.lib到附加连接器中,有必要时修改QGLViewer2.libQGLViewerd2.lib.
  2. 再次生成出错。


    提示如下
    *error LNK2019: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl Viewer::Viewer(class QWidget *)” (_imp??0Viewer@@QEAA@PEAVQWidget@@@Z),函数 "public: virtual class QWidget * __cdecl QGLViewerPlugin::createWidget(class QWidget )" (?createWidget@QGLViewerPlugin@@UEAAPEAVQWidget@@PEAV2@@Z) 中引用了该符号

  3. qglviewerPlugin.cpp中,找到如下代码块,将QDESIGNER_WIDGET_EXPORT 进行删除。


    重新编译即可。


  4. 在 Release 模式下,生成如下动态库和静态库文件。



  5. 搞定一半,为方便后续使用,将生成的.dll文件和.lib文件新建一个文件夹,我放在E:\Env\libQGLViewer\lib文件夹下。


    分别为Debug模式下和Release模式下,当然不区分也可以的。


4.放置.dll文件至指定位置。


  1. 将qglviewerplugin.dll放置到QT的plugins/designer目录,具体为:E:\Program\ProgramForStudy\Engineering\Qt\5.14.2\msvc2017_64\plugins\designer。


  2. 将QGLViewer2.dll放置在bin目录,具体为:E:\Program\ProgramForStudy\Engineering\Qt\5.14.2\msvc2017_64\bin。


  3. 测试,打开designer.exe,则可以看到出现QGLViewer。


  4. 根据网上其他教程,可以将存放有QGLViewer2.dll的文件夹添加到系统环境变量中,但我并没有这样做。


    而是直接将其放在C:\Windows\SysWOW64文件夹内。



三、CGAL Demo的编译

参考博客CGAL DEMO 演示

  1. 首先更新Qt Script。


  2. 使用CMake编译Polyhedron,选择vcpkg,并没有出现如上述博客的一些困难,诸如选择LibQGLViewer目录什么的,我也搞不清楚为什么。


    但是在编译LibQGLViewer之前CMake时会提示很多错误,即便生成sln文件也缺失很多内容,无法运行。


    这次直接就生成sln文件,且能够运行。


    可能这次实在时太凑巧了。


    后面有问题我还要回来的。



存在的问题:

  • 生成的exe文件支持什么文件格式呢?我看源demo文件中提供OFF格式的文件,但是为什么打不开,出现如下错误。




    enable scripts

    可是明明在CMake的时候能够找到QT script的目录啊

原因:我居然没有ALL_BUILD,重新生成后将Polyhedron_3设为启动项目,可以成功打开OFF文件了。



再试试其他文件类型STL,成功

后面再看看有什么BUG

总结

第一次写CSDN博客,还不是很熟悉。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存