visual c 6.0 編寫串口程序release版本在非vc電腦上無法運行的解決方法

近日給編寫了一個串口與單片機的程序,卻發現生成的release版本exe文件在沒有安裝vc的電腦上無法正常運行,點擊沒有任何反應。

然後,用vc自帶的庫連接檢查工具depends.exe檢查,沒有任何進展。

在網上查閱有人認爲是因爲程序引用了ActiveX插件,要進行插件註冊,於是在一臺沒有安裝vc的電腦上的電腦->運行 中輸入

RegSvr32   H:\MSCOMM32.OCX 進行串口插件的註冊(mscomm32.ocx在安裝vc的電腦的c:\windows\system32路徑下能找到)

這樣再打開程序,就可以正常運行,確認了是Active X 插件問題。


但是應用程序每運用到一個新的電腦上就要運行一便插件註冊是很不方便的,於是,便想在程序裏自動註冊插件。在網上看到這樣一段程序

LPCTSTR pszDllName="MSCOMM32.OCX"; 

//裝載ActiveX控件 
HINSTANCE hLib = LoadLibrary(pszDllName); 
if (hLib < (HINSTANCE)HINSTANCE_ERROR) 

MessageBox("不能載入Dll文件!","結果",MB_OK); 
return 0; 

//獲取註冊函數DllRegisterServer地址 
FARPROC lpDllEntryPoint;  
lpDllEntryPoint = GetProcAddress (hLib,_T("DllRegisterServer")); 
//調用註冊函數DllRegisterServer 
if(lpDllEntryPoint!=NULL) 

if(FAILED((*lpDllEntryPoint)())) 

MessageBox("調用DllRegisterServer失敗!","結果",MB_OK); 
FreeLibrary(hLib); 
return 0; 
}; 
MessageBox("註冊成功","結果",MB_OK); 

else 
MessageBox("調用DllRegisterServer失敗!","結果",MB_OK); 

以上程序無法進行動態的地址搜索功能,僅僅需要在程序開始處進行簡單的修改,如下

CString   strPath; 
TCHAR   szCurrentDir[MAX_PATH]; 
::GetCurrentDirectory(MAX_PATH,   szCurrentDir); 
strPath.Format(_T( "%s"),   szCurrentDir); 
CString strapp=strPath+"\\MSCOMM32.OCX";
MessageBox(strapp);

LPCTSTR pszDllName=strapp; 
這樣就可以隨着應用程序目錄的不同而動態獲取系統的當前應用程序目錄來進行mscomm32.ocx註冊。其中兩個\\代表去掉轉義效果
然後需要考慮的問題是,這段程序放在哪兒?由於我採用的FMC編程,一開始我放在dlg初始化函數內,卻發現沒有效果。在定義dlg之前也沒有效果。
這個問題一直沒解決。。

下面考慮採用製作安裝包的方法來解決這個問題。
應用程序在製作安裝包的時候有一項是提前註冊程序所需要的動態鏈接庫以及插件。
採用vc自帶的installshield for microsoft visual c++ 6.0製作應用程序安裝包。
製作過程如下:
首先參考了installshield的help文檔裏面的getstarted生成了一個可以安裝的安裝包test。
然後在此基礎上進行修改,步驟如下
用嚮導生成一個工程之後
在File Groups選項裏面
Program DLLs    Program Executable Files   Shared DLLs裏面分別在links中加入 Comm.exe 和 mscomm32.ocx
在components選項中
Program Files 和Shared DLLs中雙擊,在右側欄中的Included File Groups中,加入相應的文件夾Program Executable Files   Shared DLLs
在Scripts選項中
在setup.rul中的函數SetupFolders加入以下內容:
在begin上面加入 TRING svPath;
在TODO:下面加入
svPath= TARGETDIR ^ "Comm.exe";
LongPathToQuote ( svPath , TRUE );
AddFolderIcon ( "" , " Comm" , svPath , "" , "" , 0 , "" , REPLACE );
(注:以上均可以在help中的getstarted中找到方法)
之後再Media選項中,用Media Build Wizard建立鏡像文件,選擇3.5“diskette-1.44MBytes

然後就基本完成功能,可以在沒有vc的環境下可以安裝並運行



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章