看板 C_and_CPP 關於我們 聯絡資訊
大家好, 目前遇到一個卡了許久的問題 我網路上抓了一包別人寫的solution 他有提供 2008 & 2010 VC的專案, 都用同一份code 他們build出來都是static lib 我開了一個2010的Console專案想寫測試程式 我用2010版的lib, compile OK 但我用2008版的lib, compile會出現一大堆unresolved external symbol... 因為對於build lib這塊 並不是很熟 所以我只能用人眼diff的方式 把project setting 兩個版本的比對一次 盡量都改成一樣 卻還是無法解決此問題@@ 幾個問題如下 1. 會遇到這問題是不是本來就"不能"一版lib 相容多種版本的VC專案 ....粗淺的猜測是不是不同版本的VC 他對function的mangling不一樣 所以用舊的lib 他認不到定義是理所當然的(mangling方式不同)? (觀念不好, 這樣看來compiler是先看到.h的宣告 作mangling後 再去lib找同樣 signature的定義??) 2. 有些setting選項 default是空白 但他可以選Yes / No, 那他到底預設是Yes還是No呢? 3. 這兩個版本build出來的lib 大小有所差距 2008的小了八百多KB.. 這可能是正常, 但如果1.的假設成立~有沒有辦法克服, 用一版VC build出的lib 甚至 dll 可以for多個平台使用? 以我的1.的觀念可能就要全部都灌上extern "C" 不要compiler做手腳?? 但是我不知道extern "C"對 C++ 的 class 甚至裡面有virtual之類的 有沒有作用 不好意思問了一些也許很蠢的問題 找了一些資料也沒有甚麼頭緒 煩請各位指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66
meconin:找一下 C Linkage, C++ Linkage, 可能是這邊的問題 01/19 13:15
meconin:LINK 的選項都看一下,我是不喜歡用 IDE Build ... 01/19 13:17
QQ29:我project setting裡面的 "Labrarian" diff了 應該是沒大差異 01/19 14:35
QQ29:只是2010的比較多選項 且有我2.的疑問@@ 滿怪的 01/19 14:35
QQ29:因為之前記得網路上抓得lib我也沒管說他要擺到VC 多少才能跑 01/19 14:36
QQ29:http://tinyurl.com/7z9rvg8 我是抓這一包code~ 01/19 15:01
meconin:你是說在 2010 的環境用 2008 版本的程式庫? 01/19 18:46
QQ29:X對啊,我用他2008.lib拿去2010.sln compile...狂錯,搞了一 01/19 22:00