【1】用VS新建一个dll工程
将项目设置为x64平台(这步很重要,否则程序无法编译成功)
【2】添加UG头文件目录,属性页->C/C++->常规->附加包含目录
【3】添加UG库所在目录,属性页->链接器->常规->附加库目录
【4】添加附加依赖项,属性页->链接器->输入->附加依赖项
输入:
libufun.lib
libugopenint.lib
libvmathpp.lib
libnxopencpp.lib
libnxopenuicpp.lib
【5】添加所有lib作为依赖项(此步可跳过)
dos命令行输入下边两行命令,将会在e盘111.txt中写入“\NX 12.0\UGOPEN”所有lib文件名称
C:\Users\Administrator>cd /d C:\Program Files\Siemens\NX 12.0\UGOPEN
C:\Program Files\Siemens\NX 12.0\UGOPEN>dir /b *.lib*>e:\111.txt
【6】代码:注释掉DllMain,ufusr为NX的接口函数
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
//#pragma comment(lib, "C:\\Program Files\\Siemens\\NX 10.0\\UGOPEN\\libugopenint.lib")
//#pragma comment(lib, "C:\\Program Files\\Siemens\\NX 10.0\\UGOPEN\\ugopenui.lib.lib")
#include "uf.h" // 包含常用 UF 函数的声明
#include "uf_modl.h" // 包含建模相关的 UF 函数声明
#include "uf_ui.h" // 包含界面操作相关的 UF 函数声明
#include <stdio.h>// 实际工作函数
static void do_work(void)
{uc1601("do task!", 1);return;}void ufusr(char* param, int* retcode, int paramLen)
{if (!UF_initialize())//获取二次开发许可 {uc1601("获取开发许可成功!", 1);//获取二次开发许可失败,提示用户 do_work();//实际工作函数 UF_terminate();//释放二次开发许可 }else{uc1601("获取开发许可失败,退出!", 1);//获取二次开发许可失败,提示用户 }
}/*
BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;
}*/
【7】调用
新建一个模型
Ctrl+U或者文件->执行->NX Open