返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Creo二次开发的第一个案例及报错处理(Creo6.0+ VS2017)
  • 377
分享到

Creo二次开发的第一个案例及报错处理(Creo6.0+ VS2017)

c++windowsphpvisualstudio 2023-09-03 16:09:01 377人浏览 独家记忆
摘要

1、版本确认 在进行环境配置前,务必要确认Creo的版本及其对应的VS版本(c++版本)要求,这个可以百度查询 根据我安装的Creo版本来看,其他版本没有测试过 Creo3.0对应VS2015 Cre

1、版本确认

在进行环境配置前,务必要确认Creo的版本及其对应的VS版本(c++版本)要求,这个可以百度查询

根据我安装的Creo版本来看,其他版本没有测试
Creo3.0对应VS2015
Creo6.0对应VS2017
Creo8.0对应VS2019
版本对应不上的话是无法编译的,另外不同的Creo版本其编译所需包含的文件也都略有区别。

2、新建DLL项目

新建DLL项目的教程网上已经很多了,这里不再重复,简单的过一遍中间的重要步骤。

①建DLL项目

在这里插入图片描述

②设置项目属性

设置包含目录和库目录,注意编译平台选择X64

包含目录:
Creo3.0:
D:\Program Files\PTC\Creo 3.0\M060\Common Files\protoolkit\includes
Creo6.0-8.0
E:\Program Files\PTC\Creo 8.0.1.0\Common Files\protoolkit\includes

库目录:
E:\Program Files\PTC\Creo 8.0.1.0\Common Files\protoolkit\x86e_win64\obj
在这里插入图片描述
在链接器依赖项中添加:
wsock32.lib
psapi.lib
netapi32.lib
mpr.lib
ucore.lib
udata.lib
protk_dllmd_NU.lib
ws2_32.lib

PS:注意一下protk_dllmd_NU.lib这个,如果你用的是Creo3.0(也有可能是4.0)以下的版本,是没有这个lib文件的,需要用protk_dllmd.lib,如果不确定是protk_dllmd_NU.lib还是protk_dllmd.lib,可以到Creo安装目录下的 比如:Creo 3.0\M060\Common Files\protoolkit\x86e_win64\obj,去这个目录下面找,有哪个就用哪个,注意看名字,不要搞错了。

在忽略特定默认库中输入:msvcrt.lib
在这里插入图片描述

③编写实例代码

在CPP文件中添加头文件

#include "pch.h"#include "framework.h"#include "test01.h"#include #include "ProMenubar.h"#include "ProMenu.h"#include "ProUtil.h"

然后在CPP底部添加业务代码(中间创建DLL项目自动生成的代码可以不用管)

static uiCmdAccessState AccessDefault(uiCmdAcceSSMode access_mode){return(ACCESS_AVaiLABLE);}void Test1(){AfxMessageBox(_T("测试按钮 A"));}void Test2(){AfxMessageBox(_T("测试按钮 B"));}extern "C" int user_initialize(){ProError status;ProFileName MsgFile;ProStringToWstring(MsgFile, "IconMessage.txt"); //注意此处的 IconMessage 与后面的txt 文件夹下的 IconMessage.txt 文件名必须相同uiCmdCmdId PushButton1_cmd_id, PushButton2_cmd_id;status = ProMenubarMenuAdd("MainMenu", "Function", "Help", PRO_B_TRUE, MsgFile);ProCmdActionAdd("PushButton1_Act", (uiCmdCmdActFn)Test1, 12, AccessDefault, PRO_B_TRUE, PRO_B_TRUE, &PushButton1_cmd_id);ProMenubarmenuPushbuttonAdd("MainMenu", "PushButton", "FirstButton", "this button will show a message",NULL,PRO_B_TRUE,PushButton1_cmd_id,MsgFile);ProCmdActionAdd("PushButton2_Act", (uiCmdCmdActFn)Test2, uiCmdPrioDefault, AccessDefault, PRO_B_TRUE, PRO_B_TRUE, &PushButton2_cmd_id);ProMenubarmenuPushbuttonAdd("MainMenu", "PushButton2", "SecondButton", "this button will show a message", NULL, PRO_B_TRUE, PushButton2_cmd_id, MsgFile);return status;}extern "C" void user_terminate(){AFX_MANAGE_STATE(AfxGetStaticModuleState());}

然后编译文件,生成DLL文件,将DLL复制。

④创建Creo界面按钮

找一个文件路径,将上面生成的DLL复制过来,然后建立一个文本文档,命名为prokt.dat,在文本中输入:

NAME TestForCreoEXEC_FILE H:/01_codeup/Creo_CAX/04codetest/test01_environment/test01_new/test01.dllTEXT_DIR H:/01_codeup/Creo_CAX/04codetest/test01_environment/test01_new/textSTARTUP dllREVISION Creo6.0END

在文件夹下新建text文件夹,在文件夹内新建文本文档,命名为IconMessage.txt,在文本中输入:

FunctionUserFunction##FirstButtonA Button##secondbuttonB Button##this button will show a messagethis button will show a message##show first buttonshow first button##

上述代码中EXEC_FILE中的路径为DLL路径,比如我的DLL命名为test01.dll
TEXT_DIR路径为IconMessage.txt文本文件的文件夹路径,和前面CPP里面的文本名称是一一对应的。

⑤Creo界面上添加按钮

打开Creo界面,在实用工具下拉菜单中找到辅助应用程序
在这里插入图片描述
点击注册
在这里插入图片描述
选择刚刚创建的prokt.dat文件
在这里插入图片描述
点击启动
在这里插入图片描述
启动后在工具里就会出现刚刚创建的两个测试按钮,点击按钮会弹出对应的文本提示窗
在这里插入图片描述
至此,creo的二次开发环境配置完成,第一个测试案例完成。

3、报错问题处理

1、PRO_TK_MSG_NOT_FOUND

这个错误是按钮文本找不到的问题,这是因为网上的教程代码里面写的是IconMessage.txt文件,但后面新建文本文档的时候,教程里写的是新建“IconMessage.text”,这两个文件一个txt,一个text,不对应,所以软件找不到文件,将新建的文本文件改为IconMessage.txt即可。

2、无法解析的外部符号
错误 LNK2019 无法解析的外部符号 ProCmdActionAdd,该符号在函数 user_initialize 中被引用
错误 LNK2019 无法解析的外部符号 ProMenubarMenuAdd,该符号在函数 user_initialize 中被引用

这个错误是因为链接器输入附加依赖项的时候搞错了,protk_dllmd.lib和protk_dllmd_NU.lib的这个问题,高版本的是-NU版本的lib文件,低版本没有-NU这个字符,在前面链接器设置也有详细说明。

3、_MSC_VER”的不匹配项
错误 LNK2038 检测到“_MSC_VER”的不匹配项: 值“1900”不匹配值“1700”

这个错误是因为使用的VS开发版本和Creo版本不匹配的原因,比如选的是Creo3.0的库,那就没法用17,19版本的VS开发,Creo8.0的库,也没法用13,15版本的VS开发。这个在文章开头也有提到。

以上内容为个人调试过程的记录,只记录了我自己测试过的内容和发现的问题,供大家参考,内容有错欢迎批评指正,谢谢~

来源地址:https://blog.csdn.net/bfb1988/article/details/126409302

--结束END--

本文标题: Creo二次开发的第一个案例及报错处理(Creo6.0+ VS2017)

本文链接: https://lsjlt.com/news/392456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作