最近 team 遇到了這鬼問題,全都是源自於萬惡的 vc6.0 移到 vs2010 上面所帶來的效應。言歸正傳,長話短說。
專案裡有一份 exe 和數份 dll (上百份) ,dll 是購買機制,exe 部份功能是看 dll 有沒有開啟。早期 exe 和 dll 都是用 vc6.0 完成的。
exe 從 6.0 升級到 2010 ,dll 也從 6.0 升級到 2010 ,這四種搭配必須無誤,問題點在於有一個功能竟然是直接傳 pointer to class,而這個 class 還是繼承自 MFC 來的,可以想做是 class CMyButton。這個 class 不論 dll 還是 exe 專案,都有同樣的 source code 塞進去。問題點出在,class MyButton 在 vc6.0 和 vs2010 下編譯,大小並不相同 ( 廢話,光是繼承 CButton,再繼承 CWnd ,再繼承 CCmdTarget,這個只要 MFC 中間有改過一個就不一樣了 ) ,接下來的麻煩就不用我講了吧。
問題應源自於,部份 dll 要畫 UI 時,是 exe 和 dll 各負責一半 ( = = 沒錯,是各負責一半,所以在各自專案裡, CMyButton 兩邊都有一份相同的 source code) 。說實在的目前我沒想到好的解決方法。
專案裡有一份 exe 和數份 dll (上百份) ,dll 是購買機制,exe 部份功能是看 dll 有沒有開啟。早期 exe 和 dll 都是用 vc6.0 完成的。
exe 從 6.0 升級到 2010 ,dll 也從 6.0 升級到 2010 ,這四種搭配必須無誤,問題點在於有一個功能竟然是直接傳 pointer to class,而這個 class 還是繼承自 MFC 來的,可以想做是 class CMyButton。這個 class 不論 dll 還是 exe 專案,都有同樣的 source code 塞進去。問題點出在,class MyButton 在 vc6.0 和 vs2010 下編譯,大小並不相同 ( 廢話,光是繼承 CButton,再繼承 CWnd ,再繼承 CCmdTarget,這個只要 MFC 中間有改過一個就不一樣了 ) ,接下來的麻煩就不用我講了吧。
問題應源自於,部份 dll 要畫 UI 時,是 exe 和 dll 各負責一半 ( = = 沒錯,是各負責一半,所以在各自專案裡, CMyButton 兩邊都有一份相同的 source code) 。說實在的目前我沒想到好的解決方法。

