目录
我的安装环境:
Windows7 旗舰版 SP1 x64;
Visual Studio 2010 SP1;
OpenCasCade-6.7.1 源码包;
如图为OpenCasCade官方文档上列出的Requirements:
注意 Visual Studio 的版本要求。
OpenCasCade下载和安装
请自行到OpenCasCade官网进行下载,我下载的是下面的那个源码包。(上面的是针对VS2008 预编译好的,可以直接使用,库文件什么的都已经生成好了。使用方法参见后文。)
接下来,下载适合自己编译器版本的第三方库(官方下载地址):
Note:这里的第三方库都是根据相应的平台编译生成好的,直接下载解压即可使用。如果不从这里下,而是从各个第三方库的官网下载,则需要自己根据平台自行编译对应的版本,下面也会告诉你怎么自己编译生成。
OpenCasCade编译、示例运行及使用
1. 确保你下载安装了所有需要的第三方库(对照上图)
OCCT使用两种类型的第三方库:
强依赖(必须的):
- Tcl/Tk 8.5 – 8.6;
- FreeType 2.4.10 – 2.4.11.
弱依赖(可选的):
- TBB 3.x – 4.x;
- gl2ps 1.3.5 – 1.3.8;
- FreeImage 3.14.1 -3.15.4.
安装强依赖的第三方库:
Tcl/Tk
新建一个occ3rdparty文件夹,专门用来放置第三方库。把下载的Tcl/Tk 解压到文件夹中。Tcl/Tk是之后运行 DRAW 测试程序所必须的。
FreeType
FreeType是3D窗口中,文字表现所必须的。解压下载的FreeType到occ3rdparty文件中即可。
如果你不是从上图适配过的第三方库链接下载的(是的跳过,比如你从其自身官网下载,则需要自己编译,方法很简单,打开工程目录freetype\builds\win32\vc20xx\freetype.sln中的项目工程,vc20xx 代表你的VS版本)。
选择生成配置:Debug 或 Release都可以。
生成项目,你会在目录freetype\obj\win32\vc20xx下找到生成的导入库文件(.lib)。(要注意导入库和静态链接库的区别,虽然它们的后缀都是.lib)
如果你想生成用于x64 平台的FreeType,则选择 Build – Configuration Manager,并通过复制x86平台上的配置来添加x64平台的项目配置。如图:
同时为 x64项目配置 更新输出文件目录:
同样,你会在目录freetype\x64\vc20xx下得到 x64 的导入库文件(.lib)。
骚等,还没完,接着用下面几步,我们要来生成FreeType的动态链接库文件(.dll)。
打开菜单 Project-> Properties-> Configuration Properties-> General,把 Configuration Type 改为 Dynamic Library (.dll).
编辑头文件 freetype\include\freetype\config\ftoption.h:
在第255行,去掉 FT_EXPORT 宏定义的注释,如下:
1
|
#define FT_EXPORT(x) __declspec(dllexport) x
|
再次生成FreeType工程,最后你会在目录freetype \objs\release 或 \objs\debug 得到包含一个导入库(.lib)和动态链接库(.dll)。
如果你要生成x64版本的,则重复之前的方法。
安装弱依赖的第三方库
TBB
下载解压即可。
gl2ps
下载解压即可。
若不是从上述适配过的版本链接下载的,而是自己从gl2ps的官方网站进行下载的,则需要自己编译。
很简单,
在Visual Studio中打开项目文件 gl2ps_bin\gl2ps.sln。
- 选择生成的配置选项
- Choose Release to build Release binaries.
- Choose Debug to build Debug binaries.
- 选择生成的平台
- Choose Win32 to build for a 32 bit platform.
- Choose x64 to build for a 64 bit platform.
- 编译生成该工程
- 编译生成 INSTALL 工程
FreeImage
下载解压即可。
若不是从上述适配过的版本链接下载的,而是自己从FreeImage的官方网站进行下载的,则需要自己编译。
略麻烦:
解压下载的FreeImage到occ3rdparty目录。
根据如此规则来重命名文件夹: freeimage-platform-compiler-building mode,其各个代表的意思为
- platform 代表你的是 win32 还是 win64;
- compiler 代表的是 vc8 还是 vc9 还是 vc10 还是 vc11;
- building mode 代表的是 opt (release版本) 还是 deb (debug版本)
用你的Visual Studio 打开项目文件 freeimage\FreeImage.*.sln*。
如果你的VS版本高于2008,则应用转换。
选择生成配置。
- Release
- Debug
注意:
如果你想生成 FreeImage 的 debug 版本,你需要重新命名FreeImage和FreeImagePlus工程中的以下文件:
Project -> Properties -> Configuration Properties -> Linker -> General -> Output File
12FreeImage * d * . dll to FreeImage . dllFreeImagePlus * d * . dll to FreeImagePlus . dllProject -> Properties -> Configuration Properties -> Linker -> Debugging-> Generate Program Database File
12FreeImage * d * . pdb to FreeImage . pdbFreeImagePlus * d * . pdb to FreeImagePlus . pdbProject -> Properties -> Configuration Properties -> Linker -> Advanced-Import Library
12FreeImage * d * . lib to FreeImage . libFreeImagePlus * d * . lib to FreeImagePlus . libProject -> Properties -> Configuration Properties -> Build Events -> Post -> Build Event -> Command Line
1234FreeImage * d * . dll to FreeImage . dllFreeImage * d * . lib to FreeImage . libFreeImagePlus * d * . dll to FreeImagePlus . dllFreeImagePlus * d * . lib to FreeImagePlus . lib此外, 重命名FreeImagePlus工程里的相关配置:
Project -> Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies
1from FreeImage * d * . lib to FreeImage . lib- 选择生成平台
- Win32
- x64
开始生成
最终你会在目录freeimage\Dist folder 得到库文件(FreeImage.dll and FreeImage.lib) 以及 在freeimage\Wrapper\FreeImagePlus\dist 得到(FreeImagePlus.dll and FreeImagePlus.lib).
OpenCL ICD Loader
下载解压即可。
这个不建议自己到OpenCL ICD Loader官网下载编译,所以不介绍怎么编译生成。
2. 使用Visual Studio建立OCCT
- 编辑脚本文件 custom.bat 来 定义你的环境:
- VCVER – version of Visual Studio (vc8, vc9, vc10, vc11 or vc12), and relevant VCVARS path
- ARCH – architecture (32 or 64), affects only PATH variable for execution
- HAVE_* – flags to enable or disable use of optional third-party products
- CSF_OPT_* – paths to search for includes and binaries of all used third-party products
接着运行 msvc.bat 脚本文件开始运行 Visual Studio。
注意: MSVC 工程文件是放在目录 adm\msvc\vc[9-12] 里的。二进制文件在 win32 或 win64 文件夹中.
- 建立生成项目
修改后我的custom.bat文件(改成了VS2010),要改的很多,尤其是头文件、导入库、以及动态链接库的目录,要逐一修改为你现在的目录(细心的童鞋可能会发现,其实如果开始第三方库直接放在OpenCasCade的根目录,且每个名字都重命名为 freetype-2.5.3-%VCVER%-%ARCH% 的形式,%VCVER%和%ARCH%代表的值参见上面,则后期在custom.bat上就没必要修改那么多了。。o(╯□╰)o):
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)如图:
接下来是漫长的等待。结束后你会发现OpenCasCade的根目录下多出了两个文件夹 win32 和 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++ -> 常规 -> 附加包含目录 添加目录”D:\Program Files\opencascade-6.7.1\occ3rdparty\freetype-2.5.3-vc10-32\include\freetype2″
具体方法如下:
设置的时候你可能会发现如图所示情况(工具-选项-VC++目录):
问谷歌,给的解决方法是,在属性管理器窗口,随便选择一个工程,点开选择Debug | Win32 – Microsoft.Cpp.Win32.user(这只是Debug | Win32版的配置更改,所有版本都要加上),
双击打开如图所示窗口,便可以进行设置了!
、
最后运行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
.
lib
TKShapeSchema
.
lib
FWOSPlugin
.
lib
PTKernel
.
lib
TKBool
.
lib
TKCAF
.
lib
TKCDF
.
lib
TKernel
.
lib
TKFeat
.
lib
TKFillet
.
lib
TKG2d
.
lib
TKG3d
.
lib
TKGeomAlgo
.
lib
TKGeomBase
.
lib
TKHLR
.
lib
TKMath
.
lib
TKOffset
.
lib
TKPCAF
.
lib
TKPrim
.
lib
TKPShape
.
lib
TKService
.
lib
TKTopAlgo
.
lib
TKMesh
.
lib
TKV3d
.
lib
TKOpenGl
.
lib
TKBO
.
lib
|
添加 链接器 -> 常规 -> 附加库目录 (我把所有的lib文件都复制到了下面这个目录):
1
|
"D:\Program Files\opencascade-6.7.1\win32\vc10\libd"
|
到此,你的程序就可以使用OCCT了。
接着咱们运行下 x:\x\OpenCASCADE6.7.1\opencascade-6.7.1\samples\mfc\standard
目录下的 All-vc10.sln,随便运行一个,结果如图:
NOTE:运行前请把, ~\opencascade-6.7.1\samples\mfc\standard\win32\vc10\libd\mfcsample.dll 文件 复制到目录 ~\opencascade-6.7.1\samples\mfc\standard\win32\vc10\bind\
否则会报如下错:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
--
--
--
--
--
--
--
--
--
--
--
--
--
-
Microsoft
Visual
C
++
Debug
Library
--
--
--
--
--
--
--
--
--
--
--
--
--
-
Debug
Assertion
Failed
!
Program
:
.
.
.
scade
-
6.7.1
\
samples
\
mfc
\
standard
\
win32
\
vc10
\
bind
\
Geometry
.
exe
File
:
d
:
\
program
files
\
opencascade
-
6.7.1
\
samples
\
mfc
\
standard
\
common
\
winmain
.
cpp
Line
:
76
For
information
on
how
your
program
can
cause
an
assertion
failure
,
see
the
Visual
C
++
documentation
on
asserts
.
(
Press
Retry
to
debug
the
application
)
--
--
--
--
--
--
--
--
--
--
--
--
--
-
中止
(
A
)
重试
(
R
)
忽略
(
I
)
--
--
--
--
--
--
--
--
--
--
--
--
--
-
|
总结
整个过程其实不难,比起CGAL的开发环境搭建要简单很多,重要的是胆大心细,遇到问题分析原因,然后解决它。有问题请留言。
2014/12/8
根据网友反映的各种找不到dll文件问题,现添加如下内容,也是博主疏漏了。抱歉!
我的做法是把所有的dll文件(包括第三方库的)都复制到一个文件夹下,然后把此目录添加到用户环境变量PATH里。
当然,你也可以把所有的dll文件一股脑塞到system32或者syswow64里,但是不建议这么做。
转:http://www.zyh1690.org/opencascade-development-environment-set-up/