程式在本機運行正常,拷貝.exe到其他機器不能運行(閃爍后沒有任何提示)
在靜態庫中使用 MFC
運行庫:多執行緒 (/MT)
活動解決方案配置:Release
這些都設定了,之前撰寫的程式沒有使用TeeChart控制元件,在其他電腦運行正常。
這次是不是因為使用了該控制元件的原因?要怎么解決!!!謝謝大家了!
uj5u.com熱心網友回復:
那就把 TeeChart 一起打包, 程式啟動前注冊一下uj5u.com熱心網友回復:
要將TeeChart控制元件的dll拿到目標機器上注冊一下一、可以手動用 命令列下運行:regsvr32
二、可以在代碼中注冊,api 函式注冊
此方法的設計思路是:先將 activeX 控制元件載入記憶體,然后驗證其有效性,最后直接在記憶體地址中執行其注冊函式(DllRegisterServer、 DllUnregisterServer)。
其編程方法是:
1、使用Windows api 函式Loadlibrary 載入activeX 控制元件;
2、使用GetProcAddress 函式獲取activeX 控制元件中注冊函式DllRegisterServer(注銷函式為 DllUnregisterServer)指標;
3、使用CallwindowProc 函式執行已載入記憶體的activeX 控制元件注冊函式(DllRegisterServer、 DllUnregisterServer)。
示例:
typedef int (callback* myfunction)(void);
myfunction myfunction = null;
hinstance handle = null ;
handle = LoadLibrary("trdragdroptreectrl.ocx");
if( handle != null )
{
myfunction = GetProcAddress(handle, "DllRegisterServer");
if( myfunction != null )
{
myfunction();
}
}
uj5u.com熱心網友回復:
需要把TEECHART那個組件也放到目標電腦上(可以在你軟體同目錄下),同時還需要注冊過,才能使用你可以把這個組件作為資源放到你程式里,然后判斷系統若無注冊該組件,則你程式先注冊了再運行
uj5u.com熱心網友回復:
您好,我現在也遇到這個問題,請問您是怎么解決的啊uj5u.com熱心網友回復:
mark!!!!uj5u.com熱心網友回復:
在64位Windows下:64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/91095.html
標籤:基礎類
上一篇:利用Emgu顯示多波段影像
