作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] 使用不同VC build的static library 疑問
時間Thu Jan 19 13:10:11 2012
大家好,
目前遇到一個卡了許久的問題
我網路上抓了一包別人寫的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
→ meconin:你是說在 2010 的環境用 2008 版本的程式庫? 01/19 18:46
→ QQ29:X對啊,我用他2008.lib拿去2010.sln compile...狂錯,搞了一 01/19 22:00