UG开发实战003:工程配置及未加载图像异常处理
1、加载外部依赖
要实现对UG的二次开发,首先我们就必要要用到UG/Open提供给我们的外部依赖文件(.h头文件),点击项目右键->属性->->配置属性->C/C++->常规->附加包含目录,将其改为UG/Open的头文件存放目录。$(UGII_BASE_DIR)\\ugopen,$(UGII_BASE_DIR)是在安装UG时候配置的环境变量,指向了UG的安装目录。
2、加载lib文件库
头文件只是对功能函数接口的对外申明,并不具备实际的函数实体,它是程序调用的桥梁,要实现头文件中的函数就必要引入相应的lib文件库。这样用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。在编译器会从库中提取相应的代码,以此来达到保护源码不外漏的作用。在项目右键->属性->配置属性->链接器->常规->附加库目录中添加$(UGII_BASE_DIR)\\ugopen,在项目属性->配置属性->链接器->输入->附加依赖项中添加lib文件名。
3、项目调试
为了调试项目方便,我们可以在项目右键->属性->配置属性->调试,在调试页面的“命令”一栏中填入要调试的UG可执行文件的路径,我安装在D:\Program Files (x86)\Siemens\NX 9.0\UGII\\ugraf.exe,然后将“附加”选项改成“是”。 先用UG打开文件,再在Visual Studio 2015中需要调试的地方加断点并按F5开始调试,然后在UG中按Ctrl+U加载我们项目刚刚生成的dll文件,遇到断点就会自动跳到Visual Studio 2015中,接着就可以调试了。
4、错误:未能加载图像
前天遇到这个问题,在自己电脑上运行的好好的,拿到现场去使用时候却出现了未能加载图像的错误提示。我电脑装的是UG8.5版本,现场用的是UG9.0版本。按理来说高版本一般都兼容低版本文件的,插件自然也应该支持的。所以我觉得应该是编译环境或者是配置上需要修改,这里我的解决方法是通过修改右键->属性->配置属性->C/C++->代码生成->运行库,将“多线程调试DLL(/MDd)” 改成“ 多线程(/MT)”即可。
5、错误:LNK1561 必须定义入口点
在重新编译代码的时候遇到“错误:LNK1561 必须定义入口点”提示,解决方法是通过修改右键->属性->配置属性->常规->配置类型,将应用程序(.exe)改成动态链接库(.dll)即可。
6、
lib文件明细:
libufun.lib
libugopenint.lib
libnxopenuicpp.lib
libufun_cae.lib
libnxopencpp.lib
libnxopencpp_annotations.lib
libnxopencpp_assemblies.lib
libnxopencpp_bodydes.lib
libnxopencpp_cae.lib
libnxopencpp_cam.lib
libnxopencpp_die.lib
libnxopencpp_display.lib
libnxopencpp_drafting.lib
libnxopencpp_drawings.lib
libnxopencpp_facet.lib
libnxopencpp_features.lib
libnxopencpp_fields.lib
libnxopencpp_formboard.lib
libnxopencpp_gateway.lib
libnxopencpp_geometricanalysis.lib
libnxopencpp_geometricutilities.lib
libnxopencpp_issue.lib
libnxopencpp_layer.lib
libnxopencpp_layout2d.lib
libnxopencpp_mechatronics.lib
libnxopencpp_modldirect.lib
libnxopencpp_motion.lib
libnxopencpp_optimization.lib
libnxopencpp_options.lib
libnxopencpp_partfamily.lib
libnxopencpp_pdm.lib
libnxopencpp_physmat.lib
libnxopencpp_positioning.lib
libnxopencpp_preferences.lib
libnxopencpp_routing.lib
libnxopencpp_shapesearch.lib
libnxopencpp_sheetmetal.lib
libnxopencpp_sim.lib
libnxopencpp_tooling.lib
libnxopencpp_userdefinedobjects.lib
libnxopencpp_validate.lib
libnxopencpp_visualreporting.lib
libnxopencpp_weld.lib
libugopenint_cae.lib
libopenpp.lib
libopenintpp.lib
libvmathpp.lib