Re: [問題] 關於不同平台下dll的問題

看板C_and_CPP作者 (Eyes can tell)時間15年前 (2010/06/29 17:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《fuha (mimi)》之銘言: : 有一個dll的問題想請問大家 : 我目前寫的程式要放在兩個平台上 一個是xp 一個是 win7下 : 因為我有使用到win7 系統的API 假設叫 abc 這個function : 這個function 在 win7 裡的 USER32.DLL : 現在我想要把同一套程式也用在XP裡 但是XP裡的USER32.DLL沒有這個function : 所以我程式就算這樣寫 : if (os == XP) { : // do nothing : } else if (os == WIN7) { : // call abc function : abc(); : } : 程式在XP執行的時候也會因為找不到abc function而初始化失敗 : 有辦法解決這個問題嗎 : 另外我是用static link方式 開發平台vs2005 之前寫 MUI 的一個例子 概念大概就是用 GetModuleHandle 跟 GetProcAddress 來抓那個 API HMODULE hDLL = NULL; GetModuleHandleExW(0, L"kernel32.dll", &hDLL); if (hDLL) { typedef BOOL (__stdcall * SET_PREFERRED_UI_LANGUAGES_PROTOTYPE ) ( DWORD, PCZZWSTR, PULONG ); SET_PREFERRED_UI_LANGUAGES_PROTOTYPE fp_SetPreferredUILanguages = reinterpret_cast<SET_PREFERRED_UI_LANGUAGES_PROTOTYPE>( GetProcAddress(hDLL, "SetProcessPreferredUILanguages") ); if (!fp_SetPreferredUILanguages) { // do nothing } else { fp_SetPreferredUILanguages(MUI_LANGUAGE_NAME, userLanguagesMultiString, &setLangCount); } FreeLibrary(hDLL); hDLL = NULL; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.188.6 ※ 編輯: Hubert 來自: 122.116.188.6 (06/29 17:10)
文章代碼(AID): #1CARXU-X (C_and_CPP)
文章代碼(AID): #1CARXU-X (C_and_CPP)