mfc ocx 控制元件開發需要注意的問題
1)activex ocx 中需要呼叫第三方dll,lib;而第三方的庫編譯是用c++ builder編譯的,vs2008直接呼叫.lib 有問題;需要轉換;
C++Builder生成DLL,VC呼叫。
1、用extern "C"修飾C++Builder匯出的DLL函式。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的impdef工具生成DLL對應的def檔案。如:impdef xxx.def xxx.dll。
3、用記事本開啟xxx.def檔案,刪去每個函式名前的"_"。如原來的def檔案為:
C/C++ code
LIBRARY XXX.DLL
EXPORTS
___CPPdebugHook @2 ; ___CPPdebugHook
_aFunc @1 ; _aFunc
那麼刪除後就變成了:
C/C++ code
LIBRARY XXX.DLL
EXPORTS
__CPPdebugHook @2 ; ___CPPdebugHook
aFunc @1 ; _aFunc
4、用VC的LIB工具,根據上面的def檔案生成lib檔案。如:lib.exe /DEF:XXX.def /MACHINE:IX86,在vc的安裝目錄下對應的lib.exe目錄下執行。生成lib檔案之後,VC便可以使用這個lib檔案;
2)準備cabarc.exe工具,可以從微軟官方下載使用執行如下命令進行打包:
CABARC.exe -s 6144 N "xxxxxx.cab" "xxxxx.ocx" "mwhrf_bj.dll" "xxxxxx.inf"[version]
其中xxxx.inf內容如下:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
MyTestActiveX.ocx=MyTestActiveX.ocx
CVAPIV200.dll=CVAPIV200.dll
[MyTestActiveX.ocx]
file=thiscab
clsid={4A89CA80-B5C4-41D5-B150-8FC73A85E641}
FileVersion=1,0,0,1
RegisterServer=yes
DestDir=11
其中clsid:
只有需要註冊的ocx檔案才設定這個屬性,他的值就是改ocx的唯一classid,可以從專案的.idl檔案中最下方查詢;(uuid)
3)vs2008 如何除錯activex控制元件;activex除錯工具
C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\TstCon32.exe
vs2008的TstCon32.exe需要自己編譯,直接在網上下載vc6.0的TstCon32.exe;在vs2008的選單工具欄,點外部工具,彈出對話方塊;
標題:ActivexOcxTestTool
命令:C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\TstCon32.exe
然後點應用;在工具選單中選擇ActivexOcxTestTool,執行TstCon32.exe;
此時彈出標題為:ActiveX control Test Container ;
在Edit選單中選擇insert new control,選擇我們的ocx控制元件,然後在control選單中選擇invoke methods 就可以除錯.ocx中的函式了;
4)因為.ocx中又呼叫了第三方的庫檔案,使用動態載入dll的方法;LoadLibrary dll 失敗問題;
解決辦法:
hdll=NULL;
TCHAR chCurDir[MAX_PATH] = {0};
GetCurrentDirectory(MAX_PATH, chCurDir);
SetCurrentDirectory(_T("E:\\Debug\\"));
hdll = LoadLibrary(_T("CVAPIV200.dll"));
SetCurrentDirectory(chCurDir);
相關文章
- app開發需要注意哪些問題APP
- 教育培訓APP開發時需要注意的問題APP
- 開發陪診程式專案需要注意問題
- TV端影視APP開發搭建需要注意哪些問題?APP
- MFC開發常見問題的回答2 (轉)
- MFC開發常見問題的回答3 (轉)
- OCX 控制元件主動傳送訊息給 MFC 視窗訊息控制元件
- 10個需要注意的SQL問題SQL
- 配置Oracle RAC需要注意的問題Oracle
- 使用MFC的Windows 套接字應注意的幾個問題 (轉)Windows
- vs2008 下如何開發.ocx控制元件的方法控制元件
- Oracle remap_schema需要注意的問題OracleREM
- 安裝rac時需要注意的問題
- Python初學者需要注意的問題Python
- 檔案上傳需要注意的問題
- insert append需要注意的問題APP
- SQL SERVER建立索引需要注意的問題SQLServer索引
- ocx開發小結.
- 網頁控制元件OCX網頁控制元件
- 線上教育程式開發時應注意的問題
- 資料治理需要注意哪些問題
- 教育直播系統搭建需要注意的問題
- 運用mysqldump 工具時需要注意的問題MySql
- iOS編碼需要注意的幾點問題iOS
- vue中需要注意的問題總結(上)Vue
- IBM面試需要注意的幾個問題IBM面試
- 需要避免的6個雲原生開發問題
- 新手學Python開發需要注意哪些問題?謹記三大事項!Python
- MySQL中需要注意的欄位長度問題MySql
- 手機遊戲設計需要注意的7個問題遊戲設計
- dbms_sqltune.create_stgtab_sqlset需要注意的問題SQL
- JiveJdon,Linux下安裝需要注意的問題Linux
- 開發筆記,不容易注意到的問題筆記
- 學好web前端開發要注意哪些問題Web前端
- 用olldbg破解,分析ocx控制元件LLDB控制元件
- 網站定製開發需要注意的事項網站
- WAS 開發需要注意的一些細節
- 做聚合支付代理需要注意的這幾個問題?