如何编译用户自定义DLL
本文将介绍什么是用户自定义DLL以及如何在Visual Studio中编译用户自定义DLL。本教程是基于Visual Studio Community 2017 version 15.9而创建的,但这些步骤在更早的版本中也适用,版本间变化指出均有记载。本文也会讨论其他的编译器。
为修正这个问题,直接把 {Zemax}DLLSurfaces下面的“usersurf.h”复制并粘贴到source code同一个路径下,然后右键点击“Header Files”来载入头文件并导入现有的代码中。 当头文件载入到正确的路径后,红色下划线应该就不再出现了。如果有任何内容未被读出,那么该DLL可能不能编译。即使编译了,也未必能正常运行。 使用C++编译器 绝大部分Zemax自带的案例文件都是用C语言写的。由于Visual Studio是个C++编译器,这意味着必须对代码进行一些修改来正确地编译它们。 如果还没添加。那么在代码开头的初始化功能区放入“extern “C” {}”。同时确保把“BOOL WINAPI DllMain”这一行注释掉。 在C++编译器里,程序(function)名往往会在后台被修改,以使得每个程序都有其唯一的标识。如果程序名变化了,那么OpticStudio会无法运行该DLL,因为OpticStudio会寻找具体的名称(例如:UserDefinedSurface、UserObjectDefinition等)采用上述改变可以强制编译器保持原来C代码里的程序名且忽略任何可能造成的错误。 同样地,可能也会需要无视由于C和C++的细微不同造成的警告,例如: C4996: ‘srtcpy’: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 如果这是编译中唯一遇到的警告,那么以下的代码可以绕过这个问题: #pragma warning ( disable : 4996 ) 这行代码会允许编译器提供特定于电脑或者操作系统的功能,同时保持C和C++语言上大体的兼容性。 Rebuild Solution 选择Build…Rebuild Solution来编译你的代码,或者直接按键盘“Ctrl+F5”。编译成功后会输出以下内容: |
1.行业新闻、市场分析。 2.新品新技术(最新研发出来的产品技术介绍,包括产品性能参数、作用、应用领域及图片); 3.解决方案/专业论文(针对问题及需求,提出一个解决问题的执行方案); 4.技术文章、白皮书,光学软件运用技术(光电行业内技术文档);
如果想要将你的内容出现在这里,欢迎联系我们,投稿邮箱:service@opticsky.cn
-
小小白啊:学习了(2020-09-01)
-
顾鹏翔:学习了(2020-06-12)
-
rige:学习了。。。。。(2020-05-30)
-
jialunzhang:我在生成时遇见“无法启动.dll”文件的情况,请问这是为什么呢(2020-05-30)
-
xiebin525:学习了,谢谢(2020-05-25)