又大又粗又猛免费视频久久_国产理论在线播放_久久男人av资源网站免费软件_99国产精品无码

Creo的二次開發(fā)配置(creo 二次開發(fā))

ProE/Creo Parametric TOOLKIT 二次開發(fā)環(huán)境推薦設(shè)置(上)

一、ProE/Creo與IDE選擇

IDE(Integrated Development Environment):集成開發(fā)環(huán)境,是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。

VS(Microsoft Visual Studio):是微軟發(fā)布的一個很完整的開發(fā)工具集,包含很多高級語言的開發(fā)環(huán)境,VC只是VS其中的一個開發(fā)環(huán)境。

VC(Microsoft Visual C ):是微軟公司的C 開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯C語言,C 以及C /CLI等編程語言。

ProE或Creo低版本上開發(fā)的插件一般可以在高版本上運行,或?qū)⒃创a經(jīng)過少量修改,然后在高版本上編譯后即可在高版本上運行,高版本上開發(fā)的插件不可以在低版本上運行。

二、創(chuàng)建MFC DLL項目(Visual Studio 2012 Creo3.0 M140)

1. 啟動Visual Studio 2012>文件>新建>項目>模板>Visual C >MFC>MFC DLL>填寫項目“名稱(N)”>選擇項目文件存放“位置(L)”>“確定”

DLL (Dynamic Link Library):動態(tài)鏈接庫文件,又稱“應(yīng)用程序拓展”,是一種軟件文件類型。

DLL模式:進程內(nèi)模式,Pro/TOOLKIT插件與ProE或Creo程序之間的信息交換通過直接函數(shù)調(diào)用的形式完成,插件與程序無縫集成,推薦使用的一種方式。

EXE模型:多進程模式,插件被編譯為可執(zhí)行程序,這個插件程序?qū)⑹荘roE或Creo程序的衍生,并作為主程序的一個子進程來運行。

2. “下一步>”

3. DLL類型:選擇“帶靜態(tài)鏈接MFC 的規(guī)則 DLL(R)”>“完成”

使用共享MFC DLL的規(guī)則DLL(D):編譯后的DLL程序文件中不包含MFC的庫,DLL程序文件稍小一些,當(dāng)發(fā)布該程序時,如果對方的機器上沒有安裝對應(yīng)版本的MFC的庫,那么該DLL程序無法運行。

帶靜態(tài)鏈接MFC 的規(guī)則 DLL(R):編譯后的DLL程序文件中包含MFC的庫,DLL程序文件稍大一些,當(dāng)發(fā)布該程序時,即使對方電腦即使沒有安裝對應(yīng)版本的MFC的庫,那么該DLL程序也可以運行。

第一種與第二種類型對于Pro/TOOLKIT插件程序文件大小影響不大,推薦使用第二種類型。

三、項目屬性設(shè)置

1. 新建x64平臺

現(xiàn)在用戶安裝的ProE或Creo大多是64位版本,所以開發(fā)時建議開發(fā)64位平臺的插件程序,具體還是要以用戶安裝的程序平臺位數(shù)來定。

Debug:調(diào)試版本,包含調(diào)試信息,所以容量比Release大很多,并且不進行任何優(yōu)化(優(yōu)化會使調(diào)試復(fù)雜化,因為源代碼和生成的指令間關(guān)系會更復(fù)雜),便于程序調(diào)試。Debug模式下生成兩個文件,除了.exe或.dll文件外,還有一個.pdb文件,該文件記錄了代碼中斷點等調(diào)試信息。

Release:發(fā)布版本,不對源代碼進行調(diào)試,編譯時對應(yīng)用程序的速度進行優(yōu)化,使得程序在代碼大小和運行速度上都是最優(yōu)的。Release模式下生成一個文件.exe或.dll文件(調(diào)試信息可在單獨的PDB文件中生成)。

建議開發(fā)調(diào)試的時候使用Debug模式,方便插入斷點和捕捉變量值,發(fā)布的時候使用Release模式,在創(chuàng)建項目的時候可以將兩種方式都配置好,以供后續(xù)選擇。

2. 常規(guī)設(shè)置

輸出目錄:插件DLL程序文件生成的目錄,對x64平臺建議使用“..binx86e_win64”,對x86平臺建議使用“..bini486_nt”。

中間目錄:插件程序編譯鏈接是產(chǎn)生的中間文件的目錄。

平臺工具集:當(dāng)電腦中安裝有多個版本的平臺工具集時,可修改當(dāng)前項目使用的平臺工具集,平臺共計集的選擇請參照【表格1】。

MFC的使用:當(dāng)新建MFC DLL項目時,如果DLL類型選擇“使用共享MFC DLL的規(guī)則DLL(D)”,那么此處顯示“在共享 DLL 中使用 MFC”;如果DLL類型選擇“帶靜態(tài)鏈接MFC 的規(guī)則 DLL(R)”,那么此處顯示“在靜態(tài)庫中使用 MFC”。也可在此處修改DLL類型,推薦使用“在靜態(tài)庫中使用 MFC”。

字符集:可以選擇“使用 Unicode 字符集”或“使用多字節(jié)字符集”,PTC官方推薦選擇“使用 Unicode 字符集”。

3. VC 目錄

對于x64平臺和x86平臺,包含目錄一樣,庫目錄有所不同。

x64平臺:

包含目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitincludes

庫目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitx86e_win64obj

x86平臺:

包含目錄:D:PTCCreo 3.0M140CommonFilesprotoolkitincludes

庫目錄:D:PTCCreo 3.0M140CommonFilesprotoolkit i486_ntobj

4. 預(yù)處理器定義

運行庫選擇“多線程 DLL (/MD)”或“多線程調(diào)試 DLL (/MDd)”時,添加:_AFXDLL,因為不推薦選擇這兩種方式,所以不采用這兩種方式是不需要添加。

在插件DLL程序中用到頭文件“ProMessage.h”中函數(shù)時,添加:PRO_USE_VAR_ARGS,一般都會使用該文件中的函數(shù),默然是添加。

5. 運行庫

對與Debug和Release模式,運行庫的選擇有所不同:

Debug模式:多線程調(diào)試 (/MTd),推薦。

Debug模式:多線程調(diào)試 DLL (/MDd),不推薦。

Release模式:多線程 (/MT),推薦。

Release模式:多線程 DLL (/MD) ,不推薦。

運行庫:是程序在運行時所需要的庫文件。通常運行庫是以DLL的形式提供。

6. 附加依賴項

Creo版本不同,需要添加的庫文件也有所不同,一般都需要添加的項有:

mpr.lib

psapi.lib

ws2_32.lib

netapi32.lib

Creo版本

庫文件:(/MT)或(/MTd)

庫文件:(/MD)或(/MDd)

ProE4.0

protk_dll.lib

protk_dllmd.lib

ProE5.0

protk_dll.lib

protk_dllmd.lib

Creo2.0

protk_dll.lib

protk_dllmd.lib

Creo3.0

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd.lib、ucore.lib、udata.lib

Creo4.0

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd_NU.lib、ucore.lib、udata.lib

Creo5.x.x.x

protk_dll_NU.lib、ucore.lib、udata.lib

protk_dllmd_NU.lib、ucore.lib、udata.lib

四、代碼編輯

以下是該插件程序中,需要在文件“TkPlugin.cpp”中輸入的代碼:

//頭文件

#include “ProMenubar.h”

#include “ProMenu.h”

#include “ProUtil.h”

#include “ProMessage.h”

//菜單狀態(tài)

static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode)

{

return(ACCESS_AVAILABLE);

}

//自定義函數(shù)

void SayHello()

{

//消息文件

ProFileName msg_file;

ProStringToWstring(msg_file, “message.txt”);

//消息轉(zhuǎn)換

ProLine msg;

ProMessageToBuffer(msg, msg_file, “Hello World”);

//顯示消息

AfxMessageBox(msg);

}

//入口函數(shù)

extern “C” int user_initialize()

{

ProError status = PRO_TK_NO_ERROR;

//菜單文件

ProFileName menu_file;

ProStringToWstring(menu_file,”menu.txt”);

//創(chuàng)建菜單

status = ProMenubarMenuAdd(“TkPluginMenu”,”TkPluginMenu”,”Help”,PRO_B_TRUE,menu_file);

//第一個命令

uiCmdCmdId FirstCmd_Id;

status = ProCmdActionAdd(“FirstCmd_Act”,(uiCmdCmdActFn)SayHello,uiCmdPrioDefault,

AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&FirstCmd_Id);

status = ProMenubarmenuPushbuttonAdd(“TkPluginMenu”,”FirstCmd”,”FirstCmd”,

“This button will show a message”,NULL,PRO_B_TRUE,FirstCmd_Id,menu_file);

status = ProCmdIconSet(FirstCmd_Id,”FirstCmd.gif”);

//返回值

return (0);

}

//出口函數(shù)

extern “C” void user_terminate()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

}

Creo的二次開發(fā)配置(creo 二次開發(fā))

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁
返回頂部