NX二次开发External模式问题

时间:2021-08-10 17:30:04

  NX Open Api程序能够在两种不同环境下运行。

  Internal环境下的程序只能在NX界面环境下运行。在运行这种模式下的程序时,通常都会加载到NX的运行空间中。编译Internal环境下的程序生成动态链接库(dll)文件,通过NX加载dll文件功能或者通过Menuscript加载到NX界面中执行。入口函数是ufusr或者ufusa。

  External环境调用NX Open API库中的函数生成可执行文件(EXE),可以脱离NX的界面环境直接运行。运行的结果不能直接在NX界面中显示。但可以将结果保存成部件或者装配体文件,再通过NX打开。入口函数是main。

  使用Visual Stadio 2015,将NX 9.0的Open API库复制到相关的文件夹内(可参考上一篇随笔),建立NX Open Wizard项目。编译成功,执行时出现错误:“无法启动此程序,因为计算机中丢失libufun.dll。尝试重新安装该程序以解决此问题。”

  从网上找到相关解释以及解决办法,原文如下:

在尝试UG的external模式时,遇到这个问题

具体情况就是:

 

$(UGII_BASE_DIR)\ugopen

libufun.lib libugopenint.lib

都做了正确的设置

而且也完全编译成功,但是这个编译成功的exe

运行时却弹出警告窗口,提示:“没有找到libufun.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题”

这是为什么呢?

 

在外部模式下,程序之所以不能运行,是因为缺dll 支持。所以光加了libufun.lib libugopenint.lib没有用,WINDOWS中,lib只是对dll中的接口函数的声明,像目录一样

外部开发,应该只能在UGII下可以运行,要么就找到libufun.dll和libugopenint.dll所引用的每一个库,也就是说把整个UGII中的文件夹打个包到exe所在的debug目录下。

目前了解到的解决办法是:

1)直接将生成的exe文件拷贝到UGII目录下,双击运行,试过了,可以正常运行;

2)将整个UGII中的文件夹打个包到exe目录(没试过)

 

这里有很好的讨论结果

http://bbs.icax.org/viewthread.php?tid=145192&extra=&page=1

 ----------------------------------------------------------------------------------------

update:2011-3-28 17:02:22

其实是少设置了环境变量的缘故

我的电脑---右键属性---高级---环境变量---系统变量---Path

添加UGII的路径,比如:D:\Program Files\UGS\NX 6.0\UGII

 

设置之后,生成的exe便可成功运行,而不会再提示找不到libufun.dll

之前上面所述其实道理一样,只是没有从本质上解决问题,通过设置环境变量之后便可不用将生成的exe文件复制到UGII目录下了。

 ----------------------------------------------------------------------------------------

update:2012-3-12 16:29:39

设置完Path后需要重启电脑。

  设置完环境变量Path后,再次运行,程序直接崩溃。

NX二次开发External模式问题

  尝试很多办法后,最终发现是NX版本问题。之前做内部模式开发时使用的Visual Stadio 2010 + NX 9.0,安装VS2010后并进行编译,程序能够正确运行。

  之后换用NX 10.0,使用VS2015编译,也没有出现该问题。