“解决”OpenCASCADE图形设备初始化问题

有时候初始化OpenCASCADE的显示模块会失败,例如运行AnyCAD的时候说初始化失败。

 

原因是因为本机装OpenCASCADE开发包时,在系统中加入若干的系统环境变量,如下:

 

set CASROOT=C:/lib/OpenCASCADE6.3.0/ros set PATH=%CASROOT%/../3rdparty/win32/vs;%CASROOT%/../3rdparty/win32/tcltk/bin;%CASROOT%/win32/bin;%PATH% set CSF_MDTVFontDirectory=%CASROOT%/src/FontMFT set CSF_LANGUAGE=us set MMGT_CLEAR=1 set CSF_EXCEPTION_PROMPT=1 set CSF_SHMessage=%CASROOT%/src/SHMessage set CSF_MDTVTexturesDirectory=%CASROOT%/src/Textures set CSF_XSMessage=%CASROOT%/src/XSMessage set CSF_StandardDefaults=%CASROOT%/src/StdResource set CSF_PluginDefaults=%CASROOT%/src/StdResource set CSF_XCAFDefaults=%CASROOT%/src/StdResource set CSF_StandardLiteDefaults=%CASROOT%/src/StdResource set CSF_GraphicShr=%CASROOT%/win32/bin/TKOpenGl.dll set CSF_UnitsLexicon=%CASROOT%/src/UnitsAPI/Lexi_Expr.dat set CSF_UnitsDefinition=%CASROOT%/src/UnitsAPI/Units.dat set CSF_IGESDefaults=%CASROOT%/src/XSTEPResource set CSF_STEPDefaults=%CASROOT%/src/XSTEPResource set CSF_XmlOcafResource=%CASROOT%/src/XmlOcafResource

 

其中有一条为:

set CSF_GraphicShr=%CASROOT%/win32/bin/TKOpenGl.dll

 

而OpenCASCADE的显示模块会根据环境变量动态加载TKOpenGL.dll。如果系统环境变量中没有CSF_GraphicShr,就会在当前目录下面找。

 

也就是说,你发布的软件有可能调用用户本机安装的TKOpenGL.dll。而这个dll有可能跟你的OCC不是同一个版本,从而可能引起初始化失败。

 

解决办法:

(1)修改用户的CSF_GraphicShr环境变量

可以让用户该,也可以在程序中实现

(2)一劳永逸的办法

自己修改调用TKOpenGL.dll的OCC模块,不让她依赖环境变量。

你可能感兴趣的:(OpenCASCADE)