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

看板C_and_CPP作者 (綠豆嘉義人)時間12年前 (2012/01/19 23:08), 編輯推噓7(8121)
留言30則, 7人參與, 最新討論串2/2 (看更多)
先確認你電腦是裝VS 2010還是2008 如果是2010, 應該直接抓他們的2010 solution來build吧, 不要開2010 project 再去link 2008的 static lib 2010 compiler對於lib的使用行為 跟2008做出來的lib 預設給人用的行為 可能有出入..細節我不知道 我自己是用VS 2008 抓了KompexSQLiteWrapper-Source_1.7.9.zip 可以build過. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.223.81 ※ 編輯: mingtai1 來自: 119.77.223.81 (01/19 23:22)

01/19 23:47, , 1F
我兩套都有裝 我單純想了解 該怎麼做一個lib 可以給其他平台
01/19 23:47, 1F

01/19 23:47, , 2F
甚至 非vc 的 compiler來編譯@@ 我實在很不了解他一堆error是
01/19 23:47, 2F

01/19 23:48, , 3F
為什麼..我之前抓別人的lib在VC9 VC8 都可以使用..想知道怎做
01/19 23:48, 3F

01/19 23:52, , 4F
如果都是source code,用的都是standard library就可以
01/19 23:52, 4F

01/19 23:54, , 5F
非VC編譯,你若要拿WIN32 API去gcc編譯當然就不可能
01/19 23:54, 5F

01/20 00:01, , 6F
恩~若都win32的 不知該怎做到 任何VC都給compile過
01/20 00:01, 6F

01/20 00:04, , 7F
只要有Source理論上都能編譯,除非是被拿掉的語法或不相容
01/20 00:04, 7F

01/20 00:05, , 8F
非source level的,ex. 08編出來的lib拿去10用才有問題
01/20 00:05, 8F

01/20 00:05, , 9F
不然就不會出現2008/2010轉散發套件這種東西了
01/20 00:05, 9F

01/20 00:06, , 10F
另外你若用某些新template語法 拿去舊的VC也是會編不過..
01/20 00:06, 10F

01/20 00:07, , 11F
啊?為什麼gcc不能呼叫win32 api?
01/20 00:07, 11F

01/20 00:13, , 12F
L大:說錯了,我是指WINDOWS API(windows.h/winnt.h..)那些
01/20 00:13, 12F

01/20 00:30, , 13F
gcc部分再修正一下,發現MinGW原來裡面也有那些header,所
01/20 00:30, 13F

01/20 00:31, , 14F
以應該是可以(只是不確定是否有100% 支援VC有的header?)
01/20 00:31, 14F

01/20 00:34, , 15F
要做到一個lib給任何版本的VC都過 不太可能
01/20 00:34, 15F

01/20 00:36, , 16F
@min~: 沒有百分百支援,但常用的api是夠的,只是在連結
01/20 00:36, 16F

01/20 00:36, , 17F
.o 時會麻煩一點點,要去找原本的lib對應到哪個.o
01/20 00:36, 17F

01/20 00:42, , 18F
感謝t大補充^^ gcc我通常在X-Window上用所以MS上較不熟..
01/20 00:42, 18F

01/20 00:50, , 19F
抱歉 那可以提示我前一篇 1.的觀念有沒有錯嗎@@
01/20 00:50, 19F

01/20 00:57, , 20F
你無法確定2008與2010調用的dll裡面的func name是一樣,
01/20 00:57, 20F

01/20 00:58, , 21F
就不能確定這件事.
01/20 00:58, 21F

01/20 01:53, , 22F
1那如果是自己export的函式會有不同mangling的問題嗎
01/20 01:53, 22F

01/20 02:09, , 23F
調有不同dll就有可能。
01/20 02:09, 23F

01/20 11:51, , 24F
Q大有檢查過link run time的方式相同嗎?(MT or MD)
01/20 11:51, 24F

01/20 11:52, , 25F
binary的size可能是差在run time有沒有包進lib裡
01/20 11:52, 25F

01/20 15:23, , 26F
關於run time, 在Visual Studio 2010的c++ compiler中,
01/20 15:23, 26F

01/20 15:25, , 27F
以經移除掉ML\MLD,改用多線程的MTD\MT
01/20 15:25, 27F

01/20 15:30, , 28F
MT與MD都沒有用Debug,但都是多線程,MD是多線程DLL
01/20 15:30, 28F

01/20 15:31, , 29F
恩~雖然跟這設定不熟~但我看兩個專案這部分應該是一樣的@@
01/20 15:31, 29F

01/20 15:32, , 30F
像我在使用時,都用帶有Debug的多線程模式(MTd)
01/20 15:32, 30F
文章代碼(AID): #1F637wVF (C_and_CPP)
文章代碼(AID): #1F637wVF (C_and_CPP)