基于OpenCasCade二次开发了一个程序,想采用简单的copy的发布(部署)方式。

但在发布时遇到了很多问题。总结一下。

首先将所有所需的dll拷贝到了执行目录下,然后将程序copy到一台未安装OpenCasCade的机器上运行出错,信息如下:

即出错信息为:Runtime error! This application has requested the Runtime to terminate it in an unusual wya.

上网查了好久,所有的处理方法都不对路,极度郁闷的思索中。首先报的不是dll未找到,说明不是dll未添加,那是什么错呢?抱着尝试的态度,删除了OpenCasCade添加的所有环境变量,惊喜的发现,本机上运行也出现上述错误。

初步认为是调用了某个未知的dll,一条一条的添加环境变量,结果大出所料,当添加环境变量set CASROOT=E:\OpenCASCADE6.1.0\ros时,无错误发生。反复测试后确定,就是这个环境变量在作祟。并且,此环境变量的值对我的程序并不重要,只要存在就可以正常运行。

基于这些,判断肯定是OpenCasCade的类库中直接绑定了该环境变量,并在没有发现该变量的时候莫名的抛出了这样一个异常。

通过debug,将罪魁祸首定格在Visualization这个工程。仔细查找发现了如下代码:

Aspect_Driver::Aspect_Driver () {

OSD_Environment CSF_MDTVFontDirectory ;

char *fontdir , *casroot ;
  fontdir =  getenv("CSF_MDTVFontDirectory" );
  if ( !fontdir) {
    casroot  = getenv("CASROOT");
    if ( casroot ) {
      TCollection_AsciiString CasRootString (casroot);
      CasRootString += "/src/FontMFT" ;
      CSF_MDTVFontDirectory = OSD_Environment(CasRootString.ToCString());
    } else {
      cout << " CASROOT or CSF_MDTVFontDirectory  are mandatory to use this fonctionnality " << endl;
      Standard_Failure::Raise ( "CSF_MDTVTexturesDirectory and CASROOT not setted " );
    }
  } else {
    CSF_MDTVFontDirectory = OSD_Environment("CSF_MDTVFontDirectory");
  }
  TCollection_AsciiString dir(CSF_MDTVFontDirectory.Value());

dirMFTisDefined = (dir.Length() > 0);
  myUseMFT = Standard_True;
  myColorMapIsDefined = Standard_False;  
  myWidthMapIsDefined = Standard_False;  
  myTypeMapIsDefined  = Standard_False;  
  myFontMapIsDefined  = Standard_False;  
}

该代码访问了该环境变量,并且并没做什么实事,把casroot变量写死,重新编译通过。程序可以正常执行。

整个过程是个痛苦的经历,提醒大家注意这个问题,类似的代码不止出现在一个工程中,对我而言修改此处就可以正常工作了(虽然这样修改不是什么好习惯)。如果下次大家碰到类似问题,可以参考一下。

基于OpenCasCade的程序发布问题相关推荐

  1. 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )

    如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于MatlabR2015b版) 关键字:MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 ...

  2. 基于微信小程序云开发(校园许愿墙app)2.0稳定版,以发布上线

    大家好~我是c站的一个小博主,我会定期更新博文,本篇是围绕微信小程序基于腾讯云开发展开的一个项目,如果看着还不错,或者对您有帮助的话,可以进我的专栏看看我的小程序的其他作品https://blog.c ...

  3. 一款App基于mPaaS小程序如何进行改造?

    这篇故事围绕着一款 App 基于 mPaaS 小程序进行改造娓娓展开. 作为国内校园服务场景最丰富的平台,笑联 App 已覆盖国内 130 所高校,服务近百万高校学生. 截止目前,笑联 App 内的 ...

  4. 基于微信小程序的相关管理系统设计与实现开题报告的思路及方法

    今天主要谈一下计算机科学相关专业同学的选题的思路及方法. 毕业设计选题选没选好就像各位走出校园踏进社会的一道坎,跨过这道坎是很关键的,而有些同学却犯了难,把本应该简单的问题复杂化了.为什么这样讲呢?之 ...

  5. 基于微信小程序的大学生心理健康测试设计与实现 .docx

    目录 1 绪论 3 1.1 项目开发背景 3 1.2 项目开发意义 3 1.3 项目主要的内容 4 2 相关技术介绍及系统环境开发条件 5 2.1相关技术介绍 5 2.2系统环境开发条件 6 3 系统 ...

  6. (附源码)springboot基于微信小程序的校园外卖系统 毕业设计091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  7. 计算机毕业设计PHP基于微信小程序寸金校园租车平台(源码+程序+uni+lw+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue ...

  8. 基于微信小程序的货物管理系统的设计与实现-计算机毕业设计源码+LW文档

    货物管理系统小程序 摘  要 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化.网络化和电子化.本文以实际运用为开发背景,运用软件工程原理和开发方法,它 ...

  9. springboot+基于微信小程序的心理测评与活动管理的设计与实现 毕业设计-附源码191752

    小程序+spring boot心理测评与活动管理系统 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用 ...

最新文章

  1. 云时代架构阅读笔记二——Java性能优化(二)
  2. Spark Java API:Transformation
  3. SAP Spartacus 404 Not found页面的显示机制 - canActivateNotFoundPage
  4. jQuery相当于对 javascript二次开发,所以基于 jQuery实现的各种插件直接调用即可...
  5. aspnetcore.webapi实践k8s健康探测机制 - kubernetes
  6. java流与文件——读写二进制数据(DataOutput + DataInput)
  7. 搭建TFS2008的过程及其注意事项
  8. SQL数据库不用SQL语句能显示全表的内容_2020别再说你了解数据库了,你搞清楚这些问题了吗?...
  9. python将object转换为float_如何在python中将datatype:object转换为float64?
  10. Perl 字符串截取函数substr
  11. centos安装stress安装失败_Linux压力测试工具Stress的使用指南
  12. PackageManager.getPackageSizeInfo||UserHandle.myUserId()
  13. 2010罗森伯格HDCS®综合布线分布线销商大会顺利召开
  14. 图解Windows下QT编程入门
  15. App山寨疯狂 爱加密Apk加密平台防破解
  16. VUE.JS 实现图片随鼠标变换的动画效果
  17. 塑造成功性格的15种方法
  18. 汽车销量数据库(分车型、分品牌月度销量数据 2005-2021)
  19. 从键盘上输入两个字符串,将两个字符串首尾相连接后,再输出新的字符串(c语言)
  20. BAT批处理文本替换

热门文章

  1. 反汇编算法介绍和应用——线性扫描算法分析
  2. 深度学习中的优化算法之BGD
  3. C++/C++11中头文件numeric的使用
  4. 【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...
  5. 【Linux】修改/etc/fstab时参数设错,导致启动异常,无法进入系统(已解决)
  6. chrome弱网_请你进行一下弱网模拟
  7. python哪些是可变对象_python的不可变对象与可变对象及其妙用与坑
  8. Redis初学16:主从复制
  9. Redis初学:11(Redis的配置文件)
  10. Mybatis入门:2(xml形式的增删改查)