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

看板C_and_CPP作者 (mimi)時間15年前 (2010/06/29 07:48), 編輯推噓3(308)
留言11則, 5人參與, 最新討論串1/2 (看更多)
有一個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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.189.231

06/29 16:28, , 1F
好像是用#if 在preprocessor處理
06/29 16:28, 1F

06/29 16:58, , 2F
拿明朝劍斬清朝官?
06/29 16:58, 2F

06/29 16:59, , 3F
先研究可行性吧。
06/29 16:59, 3F

06/29 18:24, , 4F
你只能用dynamic link...
06/29 18:24, 4F

06/29 20:09, , 5F
這個故事告訴我們,沒事多用qt/wxwidgets之類的lib
06/29 20:09, 5F

06/29 20:10, , 6F
以免 winapi改版,舊檔變廢物
06/29 20:10, 6F

06/29 20:14, , 7F
看你如果願意編譯兩份就用條件編譯,不然就用動態連結吧
06/29 20:14, 7F

06/29 20:18, , 8F
條件的方式是用 #if 判斷 _WIN32_WINNT 的值來決定是否把
06/29 20:18, 8F

06/29 20:18, , 9F
使用新版 API 的程式碼編進去
06/29 20:18, 9F

06/29 20:20, , 10F
動態連結的話就參考下方 Hubert 的回文囉
06/29 20:20, 10F

06/30 14:02, , 11F
原來原PO是要執行時判斷= = 誤解原PO
06/30 14:02, 11F
文章代碼(AID): #1CAQLTCV (C_and_CPP)
文章代碼(AID): #1CAQLTCV (C_and_CPP)