[問題] 使用不同VC build的static library 疑問

看板C_and_CPP作者 (我愛阿蓉)時間14年前 (2012/01/19 13:10), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/2 (看更多)
大家好, 目前遇到一個卡了許久的問題 我網路上抓了一包別人寫的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

01/19 13:15, , 1F
找一下 C Linkage, C++ Linkage, 可能是這邊的問題
01/19 13:15, 1F

01/19 13:17, , 2F
LINK 的選項都看一下,我是不喜歡用 IDE Build ...
01/19 13:17, 2F

01/19 14:35, , 3F
我project setting裡面的 "Labrarian" diff了 應該是沒大差異
01/19 14:35, 3F

01/19 14:35, , 4F
只是2010的比較多選項 且有我2.的疑問@@ 滿怪的
01/19 14:35, 4F

01/19 14:36, , 5F
因為之前記得網路上抓得lib我也沒管說他要擺到VC 多少才能跑
01/19 14:36, 5F

01/19 15:01, , 6F
http://tinyurl.com/7z9rvg8 我是抓這一包code~
01/19 15:01, 6F

01/19 18:46, , 7F
你是說在 2010 的環境用 2008 版本的程式庫?
01/19 18:46, 7F

01/19 22:00, , 8F
X對啊,我用他2008.lib拿去2010.sln compile...狂錯,搞了一
01/19 22:00, 8F
文章代碼(AID): #1F5wMsYf (C_and_CPP)
文章代碼(AID): #1F5wMsYf (C_and_CPP)