夏天/isummer

Sun of my life !Talk is cheap, Show me the code! 追风赶月莫停留,平芜尽处是春山~

博客园 首页 新随笔 联系 管理

 1. 自己编译的debug或者release版本一运行自动退出了,怎么回事?

需要编译qcadqt-labs-qtscriptgenerator-5插件就可以解决。编译的结果文件在路径:

\qcad-3.23.0.2\plugins\script\

注意:qcadqt-labs-qtscriptgenerator-5.sln不管是Debug还是Release的的编译结果的默认路径都是同一个,文件名也相同。这就比较麻烦了,编译完debug,再编译release的话,会把debug文件覆盖掉。这里请程序员注意一下。如果只是学习源码的话,release版本可暂不编译,只用debug版本即可了

     

       打开qcadqt-labs-qtscriptgenerator-5.sln,编译项目工程:

  

 

  直接点击“项目”,生成解决方案,即可。

   编译好后,结果生成如下dll(共计10个文件d)

 

 

 

 

2. 编译报错:error MSB6006: “cmd.exe”已退出,代码为 2

问题描述: 
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: “cmd.exe”已退出,代码为 21>已完成生成项目“.vcxproj”的操作 - 失败。

解决办法:

选择项目,右键点击“Convert project to Qt  VS Tools project”,然后再次编译即可OK!
注意:

  不是qcadcad工程里的所有项目都需要进行上述设置,只对出现该问题的项目执行即可。

 

 

 

 3、编译qcadcore和qcad时,报错:error LNK1104: 无法打开文件“\.obj”

 问题描述:

\qcad-3.23.0.2\src\io\dxf\rdxfimporter.cpp(130): error C2664: “bool DL_Dxf::in(std::istream &,DL_CreationInterface *)”: 无法将参数 1 从“std::ifstream”转换为“const std::string &”

解决办法:

//bool success = dxflib.in(std::ifstream(winfn, std::ifstream::in), this);
    替换为bool success = dxflib.in((const char*)fileName.toUtf8(), this);

 

 

4. 编译qcadscripts报错:

4>qrc_scripts_release.obj : error LNK2005: "int __cdecl qInitResources_scripts(void)" (?qInitResources_scripts@@YAHXZ) 已经在 qrc_scripts.obj 中定义
4>qrc_scripts_release.obj : error LNK2005: "int __cdecl qCleanupResources_scripts(void)" (?qCleanupResources_scripts@@YAHXZ) 已经在 qrc_scripts.obj 中定义
4>  正在创建库 ..\..\plugins\\qcadscripts_debug.lib 和对象 ..\..\plugins\\qcadscripts_debug.exp
4>..\..\plugins\\qcadscripts_debug.dll : fatal error LNK1169: 找到一个或多个多重定义的符号

原因:"对QCADScripts"项目不小心点击了菜单项Convert custom build steps to Qt/MSBuild

 

 

 解决办法:

重新打开qcad.pro文件,生成\qcad-3.23.0.2\src\scripts\qcadscripts.vcxproj.filters和qcadscripts.vcxproj文件。记住,千万不要再点击刚才提到的菜单项了。

 

 

5. QCAD所有的UI界面都是使用js实现的,入口是:\scripts\autostart.js

  QCAD应用程序框架提供了CAD特定的功能,如CAD核心、DXF导出和导入、强大的图形视图等。

  ECMAScript文件将可用的功能组合到一个应用程序中。

  QCAD应用程序框架的ECMAScript接口可用于非常快速地构建和扩展CAD特定的应用程序。

  QCAD用户界面本身及其所有的交互工具以及大多数小部件和对话框都是通过ECMAScript接口实现的。

  每个QCAD包都附带的QCAD可执行文件本质上是一个脚本解释器,它具有标准的ECMAScript功能,此外还提供了Qt API和QCAD API的附加类

  注意:在一个独立的环境中运行QCAD可执行文件将不起任何作用,因为没有要执行的ECMAScripts。默认情况下,QCAD可执行文件通过查找一个名为“scripts/autostart.js”的文件开始执行QCAD中,自动启动脚本初始化了所有ECMAScript工具和用户界面组件并启动主应用程序循环

  QCAD中当前可用的几乎所有小部件、菜单和工具都是在ECMAScript中实现的。这些脚本文件位于下载的QCAD软件包的“scripts”目录下。注意,在Mac OS X下,脚本目录位于“QCAD.app/ content/Resources/scripts”下的应用程序包中

endl;

 

参考博客:

 

(1)QCAD v3.23.0.2源码编译,使用VS2017+Qt5.12.5环境

(2)关于脚本的使用教程:https://www.qcad.org/en/tutorial-script-programming 

  

posted on 2020-08-18 23:08  夏天/isummer  阅读(772)  评论(0)    收藏  举报