许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Creo二次开发第一个案例及报错处理(Creo6.0 + VS2017环境)

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

阅读数 17
点赞 0
article_banner

1、版本确认

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

根据我安装的Creo版本来看,其他版本没有测试过

   Creo3.0对应VS2015

   Creo6.0对应VS2017

   Creo8.0对应VS2019

   版本对应不上的话是无法编译的,另外不同的Creo版本其编译所需包含的文件也都略有区别。

2、新建DLL项目

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

①建DLL项目

在这里插入图片描述

②设置项目属性

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

包含目录:

   Creo3.0:

   https://www.gofarlic.com\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 <ProToolkit.h>
#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 TestForCreo
EXEC_FILE H:/01_codeup/Creo_CAX/04codetest/test01_environment/test01_new/test01.dll
TEXT_DIR H:/01_codeup/Creo_CAX/04codetest/test01_environment/test01_new/text
STARTUP dll
REVISION Creo6.0
END

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

Function
UserFunction
#
#
FirstButton
A Button
#
#
secondbutton
B Button
#
#
this button will show a message
this button will show a message
#
#
show first button
show 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开发。这个在文章开头也有提到。

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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空