跳至正文

Teamcenter ITK开发入门:Visual Studio如何配置、构建与调试ITK程序

关注“Teamcenter笔记”发送“工业软件群“加入工软大家庭!商务合作请回复二维码“!


热门文章推荐


 



目前,Teamcenter ITK 提供的构建工具主要是一些脚本文件,例如 compile.bat 和 link_custom_exit.bat。但这些脚本文件无法利用 Visual Studio 2019 IDE 提供的强大功能,例如 调试器 (Debugger)符号浏览 (Symbol browsing) 和 项目管理
本文将介绍如何配置 Visual Studio 2019 来构建 ITK 自定义 Exit DLL 的 Debug 与 Release 版本,并使用 Visual Studio 调试器对其进行调试。


前提条件

  • 已安装 Teamcenter。

  • 已安装Visual Studio 2019,支持编译 64 位二进制文件


创建 Visual Studio 项目

  1. 启动 Visual Studio IDE,创建一个 空项目 (Empty Project),命名为 itk_gtac_exits


在 解决方案资源管理器 (Solution Explorer) 中,右键点击 Source Files,选择 添加新项 (Ctrl+Shift+A),新建一个文件itk_gtac_exits.c,保存到 itk_gtac_exitsitk_gtac_exits文件夹下。

将以下源码添加到 itk_gtac_exits.c 文件中:

#include  <ict/ict_userservice.h>#include  <tccore/custom.h>#include  <tccore/item_msg.h>#include  <user_exits/user_exits.h>extern DLLAPI int register_userservices(int *decision, va_list list);extern DLLAPI int itk_gtac_exits_register_callbacks(){  printf("itk_gtac_exits_register_callbacksn");  CUSTOM_register_exit("itk_gtac_exits",  /* 共享库名 */    "USERSERVICE_register_methods"/* user_exit 名称 */    (CUSTOM_EXIT_ftn_t)register_userservices /* 回调函数 */);  return ITK_ok;}


同样,在 Source Files 下新建一个文件 item_create_post.cpp,放到 itk_gtac_exitsitk_gtac_exits文件夹下。

添加如下代码:

#include <ict/ict_userservice.h>#include <tccore/custom.h>#include <tccore/item_msg.h>#include <user_exits/user_exits.h>#include <tccore/item.h>extern "C" DLLAPI int ItemCreatePost(METHOD_message_t* msg, va_list args){const char* item_id = va_arg(args , const char *);const char* item_name = va_arg(args , const char *);const char* type_name = va_arg(args , const char*);const char* rev_id = va_arg(args , const char*);tag_t* new_item = va_arg(args , tag_t*);tag_t* new_rev = va_arg(args , tag_t*);tag_t item_master_form = va_arg(args , tag_t);tag_t item_rev_master_form = va_arg(args , tag_t);printf("ItemId: %s, ItemName: %s, TypeName: %s, RevId: %s", item_id, item_name, type_name, rev_id);return ITK_ok;}
extern "C" DLLAPI int register_userservices(int *decision, va_list args){int ec = ITK_ok;METHOD_id_t method;*decision = ALL_CUSTOMIZATIONS;ec = METHOD_find_method("Item", ITEM_create_msg, &method);if(ec)   printf("Error %d - METHOD_find_methodn", ec);if(method.id != NULLTAG){  ec = METHOD_add_action(method, METHOD_post_action_type,       (METHOD_function_t)ItemCreatePost, NULL); if(ec != ITK_ok)   printf("tMETHOD_add_action error: %d!n", ec); else   printf("METHOD_add_action successful!n");}else   printf("Method NOT found!n");return  ec;}



至此,我们已经有一个基础的 ITK 工程。接下来需要配置项目属性,确保能够正确编译和链接。


配置项目属性 (Property Sheets)

Visual Studio 使用 属性表 (Property Sheets) 来管理编译器和链接器的设置。

新建一个文本文件,将以下 XML 内容保存为 itk_general_exits.props(路径:itk_gtac_exitsitk_gtac_exits):

<?xml version="1.0" encoding="utf-8"?>
<ProjectToolsVersion="4.0"xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroupLabel="PropertySheets" />
<PropertyGroupLabel="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>
        STEP;AP203;AP214;WIN32_LEAN_AND_MEAN;WNT;_CRT_SECURE_NO_DEPRECATE;
        _CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;_HAS_TR1=0;_WIN32;WIN32;_WIN64;
        _INTEL=1;CRTAPI1=_cdecl;CRTAPI2=cdecl;IMAN_TAO;BYPASS_FLEX;POMDLL;IPLIB=none;
        %(PreprocessorDefinitions)
</PreprocessorDefinitions>
<AdditionalIncludeDirectories>      D:Tc13.2tc_rootinclude;D:Tc13.2tc_rootinclude_cpp;
        %(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>
        delayimp.lib;libict.lib;libsyss.lib;libpom.lib;libae.lib;libappr.lib;
        ...(省略部分,保持原文完整)
 xerces322_X_19.lib;%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
<Link>
<DelayLoadDLLs>
        libict.dll;libae.dll;libappr.dll;libarchive.dll;...
</DelayLoadDLLs>
<AdditionalLibraryDirectories>
  D:Tc13.2tc_rootlib;%(AdditionalLibraryDirectories)
</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

注意事项:

  • 确保 不要换行(每一行完整写在一行)。

  • 确保 库文件之间的空格 保留。

  • 修改 AdditionalIncludeDirectories 和 AdditionalLibraryDirectories 为你的环境路径。


构建与调试

  1. 打开 Property Manager,在 Debug|x64 和 Release|x64 节点下,添加 itk_general_exits.props


  2. 在项目属性页 → Configuration Properties → General → Configuration Type,设置为 Dynamic Library (.dll)


  3. 设置 Debug 配置时,Runtime Library 选项选择 /MD,避免链接警告。

  4. 保存配置,按 F7 编译生成 DLL。


配置 Teamcenter 以加载自定义 Exit DLL

  1. 在 tc_profilevars.bat 中添加环境变量:

set TC_USER_LIB=D:devitk_gtac_exitsx64debug

  1. 在 Teamcenter 中配置 TC_customization_libraries preference,加入自定义 DLL。

  2. 重启 RAC 客户端与 TAO 窗口。

  3. 新建 Item 以测试,日志输出将显示在 TAO 窗口


使用 Visual Studio 调试 ITK Exit DLL

Teamcenter 启动时会运行 tcserver.exe 进程,该进程会加载 DLL。调试方法如下:

  1. 在源码中设置断点(F9),如:

  • 在 Visual Studio 中使用 Attach to Process (Ctrl+Alt+P),附加到 tcserver.exe


  • 启动 RAC 登录后,DLL 会被加载,断点会激活。


  • 使用 F10 单步调试,F5 继续运行。

  • 当新建 Item 时,会触发 ItemCreatePost 断点,进入调试流程。



  • 总结

    通过上述步骤,我们实现了:

    • 在 Visual Studio 2019 中创建并构建 Teamcenter 13 ITK 自定义 Exit DLL。

    • 使用属性表管理编译与链接配置。

    • 配置 Teamcenter 环境以加载 DLL。

    • 借助 Visual Studio 调试器调试 DLL 注册与运行逻辑。


    更多开发教程请参考《Teamcenter开发宝典之从入门到精通系列》
    《Teamcenter开发宝典之从入门到精通系列》公众号“Teamenter笔记”多位十年以上一线老师撰写,针对当前主流的Teamcenter11、Teamcenter12、Teamcenter13、Teamcenter14等主流版本,手把手带您入门,从Teamcenter的安装介质下载、官方文档下载、安装准备、详细安装指导、安装架构讲起,深入浅出的介绍了Teamcenter主要的三大类开发方式,两层/四层胖客户端RAC插件方式、SOA和AWC,并且含有多个项目中的实战实例精华,涵盖项目中常用的各类场景,编码器、报表、ERP集成、CAD集成等,适用于有一定Teamcenter使用经验但是不了解Teamcenter开发的同学,也适用于有一定开发基础想继续提升的同学。
    特惠价49.9元打包下载,扫描下方二维码付费后添加熊老师微信领!
    另可提供Teamcenter二次开发培训、咨询、合作业务,有需求者请联系熊老师。
    图片

    下方添加熊老师微信

    图片


    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注