关于动态静态库,问一些很弱的问题。

meiguakee 2012-11-21 11:20:32
首先好吧,这些问题真的很弱。

1.使用__declspec(dllexport)导出的内容,必须要用__declspec(dllimport)才能使用么?
2.使用def文件,是不是也只有在生成动态库的时候使用?
3.__declspec(dllexport)只是在生成动态库的时候使用,静态库的时候不需要对么?
4.如果123是对的,那么生成静态库的时候,什么都不用加,写好以后,各种东西(函数,类或者也许还有别的吧)就都被导出来了吗?就跟在源程序写函数一样?
5.如果我想到导出一个Cwnd*返回值的函数,则必须用MFC扩展dll,如果只是导出一个HWND返回值的函数,那么MFC规则的dll就可以了?
6.MFC扩展DLL跟MFC规则DLL,反映到项目的配置上,区别是什么。vs05.
(5.1+6.1)/2 = 5.6: 我还是觉得这个问题发到MFC版块,不如发到C++版块。

补充:谢谢各位直接回答我的问题,而不是给我一个链接,更不是给我一个文档教程。

感慨:所谓勤能补拙,你信奉这句话么?那么所谓扬长避短你又怎么去接受?天赋的价值要被鼓吹励志抹杀么?
3岁起显露极高的音乐天赋,4岁跟父亲学习钢琴,5岁开始作曲。6岁到慕尼黑、维也纳、普雷斯堡作了一次试验性的巡回演出。35岁,他死啦。靠着勤奋,you can?
人的精力有限,本人更信奉扬长避短。勤能补拙?糟蹋时间!天赋,兴趣,能力,是一组,而iq不在其中。所以拙还是不补的最好,因为你并不真的喜欢它。好吧,但是,我还是暂时只能继续走这条路,并不是所有的擅长跟爱好都能给你提供面包。有幸擅长一个好职业的人,与其是优秀的,不如说是幸运的。所以,在工作一年后,我仍然弱到还在提问这样的问题。此致,默哀。
...全文
85 点赞 收藏 5
写回复
5 条回复
ylgm44 2012年11月21日
静态库什么都不需要,直接可以使用。。静态库就相当于你自己写的代码,只是你看不到实现代码,代码都被编译成二进制了。。 动态库需要导出函数/类,静态库不需要。。 所以: 1. 必须要。。不调用__declspec(dllimport),你就得不到函数/类的实现。。所以写动态库的时候,都用#ifndef XXX #define XXX __declspec(dllexport) #else #define XXX __declspec(dllimport) #endif 看你的动态库的项目属性中,C/C++ -> 预处理器 -> 预处理器定义中,肯定定义了 XXX。所以在dll中,凡是这样定义的类:class XXX CYYY,那么CYYY就被定义成了__declspec(dllexport),而在使用dll的程序中,预处理器中没有定义XXX,所以,拟用dll的CYYY类时,自动就是__declspec(dllimport)模式了。。 所以,虽然你没有显式的定义__declspec(dllimport),实际上,写dll的时候,已经做了处理,你调用dll的时候,自动还是调用了__declspec(dllimport)的。 2.3. 你说的对。 4. 静态库不需要导出。。跟用你自己的代码一样用就可以了。只要包含了lib文件,有了头文件,就可以直接用。 5. 6 MFC不是很熟悉,一般俺不用mfc做dll。。不太了解。
回复 点赞
meiguakee 2012年11月21日
引用 1 楼 akirya 的回复:
1 不需要,有声明就能用 2 动态库可以用def文件也可以不用。静态库不需要 3 不需要__declspec(dllexport)就能用 4 见 1 2 3 5 不要在dll的导出函数中使用类相关的 6 区别应该是导出的内容。
1234看懂了。。
回复 点赞
珍惜生命远离CPP 2012年11月21日
1 不需要,有声明就能用 2 动态库可以用def文件也可以不用。静态库不需要 3 不需要__declspec(dllexport)就能用 4 见 1 2 3 5 不要在dll的导出函数中使用类相关的 6 区别应该是导出的内容。
回复 点赞
meiguakee 2012年11月21日
给两位输入过分,以为无满意结贴会把这些分发出去然后剩下的打水漂,结果最后一分都没有分出去,向两位道歉。
回复 点赞
meiguakee 2012年11月21日
OK谢谢两位。谢谢三楼说的那么仔细,正是菜鸟如我这般人需要的。关于1的问题我去试试就好了。 顺便说帖子分一半,是留给最后那些废话的。
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告