我的安装环境:
Windows7 旗舰版 SP1 x64;
Visual Studio 2010 SP1;
如图为OpenCasCade官方文档上列出的Requirements:
注意 Visual Studio 的版本要求。
OpenCasCade下载和安装
请自行到OpenCasCade官网进行下载
接下来,下载适合自己编译器版本的第三方库(官方下载地址):
Note:这里的第三方库都是根据相应的平台编译生成好的,直接下载解压即可使用。如果不从这里下,而是从各个第三方库的官网下载,则需要自己根据平台自行编译对应的版本,下面也会告诉你怎么自己编译生成。
OpenCasCade编译、示例运行及使用
1. 确保你下载安装了所有需要的第三方库(对照上图)
OCCT使用两种类型的第三方库:
强依赖(必须的):
弱依赖(可选的):
- FreeImage 3.14.1 -3.15.4.
安装强依赖的第三方库:
Tcl/Tk
FreeType
FreeType是3D窗口中,文字表现所必须的。解压下载的FreeType到occ3rdparty文件中即可。
如果你不是从上图适配过的第三方库链接下载的(是的跳过,比如你从其自身官网下载,则需要自己编译,方法很简单,打开工程目录freetype\builds\win32\vc20xx\freetype.sln中的项目工程,vc20xx
生成项目,你会在目录freetype\obj\win32\vc20xx下找到生成的导入库文件(.lib)。(要注意导入库和静态链接库的区别,虽然它们的后缀都是.lib)
,并通过复制x86平台上的配置来添加x64平台的项目配置。如图:
同时为 x64项目配置 更新输出文件目录:
骚等,还没完,接着用下面几步,我们要来生成FreeType的动态链接库文件(.dll)。
Project-> Properties-> Configuration Properties-> General,改为Dynamic Library (.dll).
freetype\include\freetype\config\ftoption.h:
FT_EXPORT
1 |
再次生成FreeType工程,最后你会在目录freetype \objs\release得到包含一个导入库(.lib)和动态链接库(.dll)。
如果你要生成x64版本的,则重复之前的方法。
安装弱依赖的第三方库
TBB
下载解压即可。
gl2ps
下载解压即可。
若不是从上述适配过的版本链接下载的,而是自己从gl2ps的官方网站进行下载的,则需要自己编译。
很简单,
gl2ps_bin\gl2ps.sln。
- 选择生成的配置选项
- Release
- Debug
- 选择生成的平台
- Win32
- x64
- 编译生成该工程
- INSTALL
FreeImage
下载解压即可。
若不是从上述适配过的版本链接下载的,而是自己从FreeImage的官方网站进行下载的,则需要自己编译。
略麻烦:
解压下载的FreeImage到occ3rdparty目录。
freeimage-platform-compiler-building mode,其各个代表的意思为
- platformwin32win64;
- compilervc8vc9vc10vc11;
- building modeoptdeb
freeimage\FreeImage.*.sln*。
如果你的VS版本高于2008,则应用转换。
选择生成配置。
- Release
- Debug
注意:
Project -> Properties -> Configuration Properties -> Linker -> General -> Output File
12FreeImage*d*.to FreeImage.dllFreeImagePlus*d*.dll to FreeImagePlus.dllProject -> Properties -> Configuration Properties -> Linker -> Debugging-> Generate Program Database File
12FreeImage*d*.to FreeImage.pdbFreeImagePlus*d*.pdb to FreeImagePlus.pdbProject -> Properties -> Configuration Properties -> Linker -> Advanced-Import Library
12FreeImage*d*.to FreeImage.libFreeImagePlus*d*.to FreeImagePlus.libProject -> Properties -> Configuration Properties -> Build Events -> Post -> Build Event -> Command Line
1234FreeImage*d*.to FreeImage.dllFreeImage*d*.to FreeImage.libFreeImagePlus*d*.dll to FreeImagePlus.dllFreeImagePlus*d*.lib to FreeImagePlus.libProject -> Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
1from FreeImage*d*.lib to FreeImage.lib- 选择生成平台
- Win32
- x64
开始生成
最终你会在目录freeimage\DistFreeImage.dllFreeImage.libfreeimage\Wrapper\FreeImagePlus\distFreeImagePlus.dllFreeImagePlus.lib).
OpenCL ICD Loader
下载解压即可。
这个不建议自己到OpenCL ICD Loader官网下载编译,所以不介绍怎么编译生成。
- 编辑脚本文件
msvc.bat脚本文件开始运行 Visual Studio。
- 建立生成项目
修改后我的custom.bat文件(改成了VS2010),要改的很多,尤其是头文件、导入库、以及动态链接库的目录,要逐一修改为你现在的目录freetype-2.5.3-%VCVER%-%ARCH%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | @echo off set VCVER=vc10 set ARCH=32 set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" set "PRODUCTS_PATH=%~dp0.." rem Optional 3rd-parties switches set HAVE_FREEIMAGE=true set HAVE_GL2PS=true set HAVE_TBB=true set HAVE_OPENCL=true set CHECK_QT4=true set CHECK_JDK=true rem Additional headers search paths set "CSF_OPT_INC=D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\include;D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\include;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\include;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\include\freetype2;D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\include;D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\include;D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\include" rem Additional libraries (32-bit) search paths set "CSF_OPT_LIB32=D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\lib\ia32\%VCVER%" rem Additional libraries (64-bit) search paths set "CSF_OPT_LIB64=D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\lib;D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\lib\intel64\%VCVER%" rem Additional (32-bit) search paths set "CSF_OPT_BIN32=D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\bin\ia32\%VCVER%" rem Additional (64-bit) search paths set "CSF_OPT_BIN64=D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\bin;D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\bin\intel64\%VCVER%" |
项目->批生成->全选->生成just let it go)如图:
win64,什么意思我想大家都明白。里面及包含了我设置的VS2010开发环境下所生成的Debug(文件夹名后都会加个d)和Release两个版本的导入库和动态链接库。码代码,调试代码,肯定要用带d的了咯!
1 2 3 4 5 | 正在创建库 ..\..\..\win32\vc10\libd\TKService.lib 和对象 ..\..\..\win32\vc10\libd\TKService.exp Font_FontMgr.obj : error LNK2019: 无法解析的外部符号 __imp__RegCloseKey@4,该符号在函数 "private: void __thiscall Font_FontMgr::InitFontDataBase(void)" (?InitFontDataBase@Font_FontMgr@@AAEXXZ) 中被引用 Font_FontMgr.obj : error LNK2019: 无法解析的外部符号 __imp__RegEnumValueA@32,该符号在函数 "private: void __thiscall Font_FontMgr::InitFontDataBase(void)" (?InitFontDataBase@Font_FontMgr@@AAEXXZ) 中被引用 Font_FontMgr.obj : error LNK2019: 无法解析的外部符号 __imp__RegOpenKeyExA@20,该符号在函数 "private: void __thiscall Font_FontMgr::InitFontDataBase(void)" (?InitFontDataBase@Font_FontMgr@@AAEXXZ) 中被引用 .\..\..\..\win32\vc10\bind\TKService.dll : fatal error LNK1120: 3 个无法解析的外部命令 |
链接器 -> 输入 -> 附加依赖项Advapi32.lib
也遇到了找不到“ft2build.h”的问题,尼玛!我明明在msvc.bat上加了相应的目录啊!也是醉了!
C/C++ -> 常规 -> 附加包含目录
具体方法如下:
设置的时候你可能会发现如图所示情况(工具-选项-VC++目录):
问谷歌,给的解决方法是,在属性管理器窗口,随便选择一个工程,点开选择,
双击打开如图所示窗口,便可以进行设置了!
、
最后运行draw.bat脚本文件,你就可以看到示例窗口了!
3. 自己项目使用OCCT:
附加包含目录
1 | "D:\Program Files\opencascade-6.7.1\inc";"D:\Program Files\opencascade-6.7.1\occ3rdparty\opencl-icd-1.2.11.0-32\include";"D:\Program Files\opencascade-6.7.1\occ3rdparty\tcltk-86-32\include";"D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\include";"D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\include\freetype2";"D:\Program Files\opencascade-6.7.1\occ3rdparty\freeimage-3.16.0-vc10-32\include";"D:\Program Files\opencascade-6.7.1\occ3rdparty\gl2ps-1.3.8-vc10-32\include";"D:\Program Files\opencascade-6.7.1\occ3rdparty\tbb43_20140724oss\include" |
选择,点击下三角,编辑,复制以下库到其中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | TKVrml.lib TKStl.lib TKBrep.lib TKIGES.lib TKShHealing.lib TKStep.lib TKXSBase |