简介
OpticStudio专业版和旗舰版允许用户使用C或C++程序建立他们自己的组件。有很多编译器可以编译C/C++代码,其中很常用的是Visual Studio。本文将提供一步步的编译DLL的指南。什么是用户自定义DLL?
OpticStudio可以通过用户自定义DLL来订制。在序列模式中,表面定义了光学材料的界面。表面类型可以是折射、反射、衍射或者渐变折射率。OpticStudio支持超过65种不同的表面类型,包括非常普适的面型包括多项式面型和双锥Zernike。
然而,很多时候用户依旧希望可以根据他们的具体需求订制一些功能。这就是用户自定义面型有用且强大的地方了,因为OpticStudio包含使用它的界面。在非序列模式中,物体定义了光学材料的界面。物体拥有带有材料属性的几何形状,且可以有面(face)来折射或者散射光线。材料也可以散射光线。物体也可以是个光源。OpticStudio有针对上述所有类型的内建的物体和属性。在非序列模式中。所有的这些都可以通过以下的DLL来订制:用户自定义物体、GRIN档案、衍射算法、体散射算法、用户自定义光源。
64位系统要求
过去,OpticStudio曾发布过32位和64位程序,这意味着根据不同的OpticStudio,32位和64位的DLL都可能存在。现在,OpticStudio只支持64位的应用。如果在使用DLL时弹出以下错误信息,那么源代码必须使用本文的步骤重新编译。

编译DLL一般设置
DLL文件(Dynamic Link Library)是Visual Studio的一种输出类型。为了建立一个DLL,我们先创建project space来放置代码。在Visual Studio种找到File…New…Project。










检查代码错误
现在,我们来检查并确保所有内容都能被母代码识别。如果该DLL是个用户自定义表面且source file路径不在{Zemax}\DLL\Surfaces文件夹,那么头文件“usersurf.h”会不被认可(由红色下划线表征)。

使用C++编译器
绝大部分Zemax自带的案例文件都是用C语言写的。由于Visual Studio是个C++编译器,这意味着必须对代码进行一些修改来正确地编译它们。如果还没添加。那么在代码开头的初始化功能区放入“extern “C” {}”。同时确保把“BOOL WINAPI DllMain”这一行注释掉。


Rebuild Solution
选择Build…Rebuild Solution来编译你的代码,或者直接按键盘“Ctrl+F5”。编译成功后会输出以下内容:

编译器
以下版本的Visual Studio都可以用来编译OpticStudio的用户自定义DLL:2005, 2008
Express 2010, Express 2012
Community 2017, Community 2019. 请阅读本网页来了解使用条件。