在网上找了很多资料,也遇到过很多问题。本文的配置过程主要参考了网上的两篇文章,地址如下:
http://www.doc88.com/p-3085972896759.html
http://wenku.baidu.com/link?url=4zc9tc-p4quoVG6PnVzg1kLc2g1auU9Guh9Zq4y1ow-U6U2qWPq_8YX0kyn4lwqOlZwtC10g72AK2L-iQ8TyH9Im7VTxhwepZuxb3FiHx4a
首先记录正确的环境配置过程,然后用一个实例程序验证,最后说明遇到的问题和注意事项。
电脑64位win7系统
配置过程如下:
一、新建MFC DLL
文件>新建>项目,选择MFC DLL,如图所示
DLL类型选择“使用共享 MFC DLL 的规则 DLL(D)”
二、开发环境配置
1、包含目录和库目录的设置(“D:\Creo 2.0”是本机Creo的安装目录)
1)包含目录的添加
操作:项目>属性>配置属性>VC++目录,选择包含目录,添加:
D:\Creo 2.0\Common Files\M010\prodevelop\includes
D:\Creo 2.0\Common Files\M010\protoolkit\protk_appls\includes
D:\Creo 2.0\Common Files\M010\protoolkit\includes
2)库目录的添加,与包含目录的添加类似,添加:
D:\Creo 2.0\Common Files\M010\prodevelop\x86e_win64\obj
D:\Creo 2.0\Common Files\M010\protoolkit\x86e_win64\obj
3、进行工程属性配置
1)“项目”>属性>配置属性>常规,点击“配置管理器”,配置为Debug,平台为x64,如图
2) 字符集选择“使用多字节字符集”
3) “预处理器”中对“预处理器定义”进行编辑,如下图
4) “代码生成”的“运行库”选择“多线程调试DLL(/MDd)
5)语言
6)“连接器”>“输入”,编辑“附加依赖库”,添加protk_dllmd.lib
netapi32.lib
wsock32.lib
psapi.lib
ws2_32.lib
mpr.lib
如下图
7)“忽略特定默认库”中添加“msvcrt.lib”,此处不截图。
三、添加实例程序
双击项目源文件中的“Hello.cpp”
1、添加头文件
#include "ProMenubar.h"
#include "ProMenu.h" #include "ProUtil.h"
#include
#pragma comment(lib,"netapi32")
如图
2、尾部添加程序
static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode)
{
return(ACCESS_AVAILABLE);
}
void Test1()
{
AfxMessageBox(_T("轴"));
}
void Test2()
{
AfxMessageBox(_T("齿轮"));
}
extern "C" int user_initialize()
{
ProError status;
ProFileName MsgFile;
ProStringToWstring(MsgFile,"IconMessage.txt"); //注意此处的IconMessage与后面的text文件夹下的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());
}
如图
3、生成Hello
“生成”>“生成Hello”
在项目Hello目录下会生成“Hello.dll”文件(E:\programming\projects\C\creoTest\Hello\x64\Debug)
4、创建protk.dat文件
在E:\programming\projects\C\creoTest\Hello目录下创建protk.dat文件,向文件添加如下内容:
NAME Hello
EXEC_FILE E:\programming\projects\C\creoTest\Hello\x64\Debug\Hello.dll
TEXT_DIR E:\programming\projects\C\creoTest\Hello\text
STARTUP DLL
FAIL_TOL TRUE
DELAY_START FALSE
ALLOW_STOP TRUE
REVISION 2014
END
5、在E:\programming\projects\C\creoTest\Hello目录下创建“text文件夹”,在“text文件夹”下面添加“IconMessage.text”,向其中添加如下内容:
Function
UserFunction
#
#
FirstButton
Demo1
#
#
secondbutton
Demo2
#
#
this button will show a message
this button will show a message
#
#
show first button
show first button
#
#
四、测试