有时候初始化OpenCASCADE的显示模块会失败,例如运行AnyCAD的时候说初始化失败。
原因是因为本机装OpenCASCADE开发包时,在系统中加入若干的系统环境变量,如下:
其中有一条为:
set CSF_GraphicShr=%CASROOT%/win32/bin/TKOpenGl.dll
而OpenCASCADE的显示模块会根据环境变量动态加载TKOpenGL.dll。如果系统环境变量中没有CSF_GraphicShr,就会在当前目录下面找。
也就是说,你发布的软件有可能调用用户本机安装的TKOpenGL.dll。而这个dll有可能跟你的OCC不是同一个版本,从而可能引起初始化失败。
解决办法:
(1)修改用户的CSF_GraphicShr环境变量
可以让用户该,也可以在程序中实现
(2)一劳永逸的办法
自己修改调用TKOpenGL.dll的OCC模块,不让她依赖环境变量。