MinGW/Codelite 如何生成正确的dll文件

dll文件里面包括了函数的实现二进制代码段, 在linker输出的时候,通常Cpp会对函数改名,所以名为writestr的函数可能在dll里面表示为writestr@0 这样的名称,所以在输出dll的时候需要使用def文件来处理这些输出的问题

下面是def文件示例

LIBRARY example

EXPORTS
cpystr@0 @1
explong@0 @2
writestr@4 @3
cpystr=cpystr@0
explong=explong@0
writestr=writestr@4

使用=可以对函数名称做别名进行修正,在默认情况下mingw输出的so文件实际就是dll文件,只不过函数名称是加了序号的

总结用codelite输出正确dll的方法是

在链接参数里加 -Wl,--out-implib,libexp.a,--output-def,exp2.def

这样编译器会自动输出一个当前编译出来的so文件的导出函数列表,当然是加了数字序号之类的,所以你需要更名,复制一份按上面的语法添加别名,然后存为exp.def文件

这样postbuild里面再用这样的语句重新输出dll文件,g …

more ...