code::blocks 生成.dll

场景:[]怎么在Code:Blocks里用自定义的def文件生成dll

[求助]如何在Code::Blocks里用自定义的def文件生成dll?
这个问题差点让我混淆def文件的作用,根据网上查看的各种资料,我的理解是:
def文件使用于生成dll时的,指明生成的dll里应该有哪些导出符号。

但Code::Blocks却是在生成dll的时候,自动生成了一个def文件——不禁让人无比困惑,def文件到底是用来生成dll的,还是和dll一起被生成出来的

姑且理解为,这里被生成的dll是用于其他语言调用mingw生成的dll吧。


我的问题是:
1.上述我的理解对吗?如果不对,请帮忙指出错误
2.如果def是用于生成dll的,有谁知道Code::Blocks里,要如何配置,才能在生成dll时,使用到我们自定义的def文件?

------解决方案--------------------
按照一般ide的思路,
应该是你可以生成并编写这个def;
但是如果没有编写的时候,ide自动帮你生成这个def。
------解决方案--------------------
首先搞清楚,def影响的只是导入库,而不是dll
def是生成dll的同时生成的

所以使用自定义的def要注意,gcc在windows上的dll的符号是全部导出的,如果你不想要一些符号导出,那么有2种方法

一个是使用链接器开关
-Wl,--exclude-symbols sym1,sym2,...
排除你不想导出的符号

一个是符号的属性声明
windows下格式为
__declspec(dllexport) void func1(...)
这样链接时只会把有dllexport属性的符号导出