作者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