作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] Qt的shared lib
時間Wed Apr 1 17:15:58 2009
※ 引述《legnaleurc (CA)》之銘言:
: 這幾天嘗試把某個作品 port 到 Windows 上
: 我把其中一個部分分離出來變成 shared lib
: 在 Linux 上可以直接 link *.so
: 但是在 Windows 上用 VC 編譯
: 老是不會生成 *.lib , 只有 *.dll
: 偏偏 VC 的 linker 只能連 *.lib
: 請問是專案那裡還要設定什麼嗎?
你的 symbol 要加上 __declspec(dllexport)
如下:
__declspec(dllexport) void SomeFunc()
{
...
}
__declspec(dllexport) int SomeVar;
這樣這些 symbol 才會輸出到 .lib 中
你應該是少做了這步
以致於 VC 找不到要 export 的 symbol,乾脆就不生 .lib 了
另外你的 client code 必需用 __declspec(dllimport) 來宣告 symbol
如下:
// XXX.h
__declspec(dllimport) void SomeFunc();
__declspec(dllimport) int SomeVar;
Windows 上寫程式很麻煩滴
: PS:
: 不要問我為什麼不用 MinGW, 我有試過, 遭遇了不少挫折 OTZ
: IDE的話, QtCreator和VC都試過, 用的都是 cl + link
什麼挫折?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
1F:推 legnaleurc:這...= = 那如果是class呢? 04/02 00:31
2F:→ legnaleurc:我有點想放棄Windows了.... 04/02 00:31
3F:→ legnaleurc:挫折都是在建立編譯環境上(Loki,Boost,FFMpeg等) 04/02 00:32
4F:→ legnaleurc:還有一些thread的lib,我自己本身的程式反而要改的地方 04/02 00:32
5F:→ legnaleurc:很少 04/02 00:33
6F:推 sunneo:class的export是 class DLLIMPORT ClassName{ ... } 04/02 06:43
7F:→ sunneo:只需要這樣寫 class的member function就會匯出 04/02 06:43
8F:→ sunneo:DLLIMPORT是在dll專案的巨集 04/02 06:44
9F:推 zxvc:l大,boost不用自己編。這邊就可以抓編好的: 04/02 09:08
11F:推 zxvc:剛才發現BoostPro installer 1.38似乎有bugs,一開始有一個對 04/02 09:53
12F:→ zxvc:話框會問你要用哪一種compiler與linking型態。但選了無效果。 04/02 09:56
13F:→ zxvc:我已經回報這個bug,等待回覆中。 04/02 09:56
※ 編輯: littleshan 來自: 61.217.32.52 (04/02 10:36)
14F:→ james732:我還以為只有我鬼打牆 選了一次還要再一個個勾選 XDD 04/02 10:54
15F:推 zxvc:遇到有bug就回報吧,可以練練英文。不過回報工作還滿累人的 04/02 11:02
16F:→ zxvc:。(拖人下水 XD) 04/02 11:02
17F:→ zxvc:回報bug算一種慈善事業,麻煩自己、造褔後人。 04/02 11:04
18F:推 legnaleurc:我一直以為那個boost的installer只能用在VC上...orz 04/02 12:08
19F:→ legnaleurc:然後一直搞不清楚 msys, MinGW, CygWin 之間的關係 04/02 12:09
20F:→ legnaleurc:我覺得他們把事情弄得好複雜= = 04/02 12:10
21F:推 zxvc:l大,那個boost installer不是本來就用在VC上!? 04/02 12:14
22F:推 legnaleurc:所以說當初我的困難是發生在MinGW上...說明頁好像還 04/02 12:17
23F:→ legnaleurc:說不官方支援MinGW ... ? 04/02 12:18
24F:→ legnaleurc:然後某些Loki不知道為什麼用MinGW編就會硬選pthread 04/02 12:19
25F:→ legnaleurc:真的很煩,光搞這些就飽了 04/02 12:20
26F:→ legnaleurc:s/某些// typo 04/02 12:21
27F:推 zxvc:了解了,原來你想在Windows上用MinGW,但要自己編boost很麻煩 04/02 12:48
28F:→ littleshan:編boost不難吧 只是花時間 04/02 13:06