cygwin可以编译生成windows下供调用的dll,包括vc可识别的lib。Cygwin-GCC:Cygwin自带了一个GCC, 用于把C/C++-Source编译成Cygwin平台下的EXE/DLL(使用Cygwin必须用其自带的GCC,因为内部会生成一些针对于平台的特定的初始化代码, 如果用其余版本的GCC则很有可能导致程序不能正常运行.)Cygwin-GCC:Cygwin自带了一个GCC, 用于把C/C++-Source编译成Cygwin平台下的EXE/DLL(使用Cygwin必须用其自带的GCC,因为内部会生成一些针对于平台的特定的初始化代码, 如果用其余版本的GCC则很有可能导致程序不能正常运行.)说明-Cygwin-GCC:在Cygwin-Shell中可直接使用gcc. 如下:gcc-sharedxxx.c-oxxx.dll//编译成DLL,注意, Cygwin-GCC默认导出所有的Function.gcc-cxxx.c-oxxx.o//编译成OBJgccxxx.c-oxxx.exe//编译成EXEarrxxx.libxxx1.oxxx2.o//打包多个obj成一个Lib(非连接)gccxxx.c./Laaa.dll-oxxx.exe//引用外部DLL生成EXEgccxxx.cyyy.c-ozzz.exe//连接多个C文件, 生成EXE.gcc-I"/bin/include" -cxxx.c-oxxx.o//引用/bin/include目录下头文件,生成OBJgcc-L"dll.a"xxx.c-oxxx.exe//连接dll.a, 生成EXE如果想知道编译时具体的信息, 可以使用--verbose这个编译选项, 对于了解GCC的工作是很有帮助的.额外的,也可以写自己的导出Lib文件, 以方便其余程序引用DLL(如Cobol2002编译器就不支持直接引用DLL,这个时候可以写一个Def, 并导出Lib文件, 便于Cobol2002使用)具体方法如下:1.编译生成DLL:如:gcc-sharedMyTest.c-oMyTest.dll,生成MyTest.dll.2.写一个DEF文件(这里是MyTest.def), 简单的格式大致如下:LIBRARYMyTest//这里的MyTest对应于MyTest.dllEXPORTSAllocMemory@1//导出的第一个function:对应于MyTest.dll里面的AllocMemory(),注意, 参数可不用写ReadMemory@2//导出的第二个function:对应于MyTest.dll里面的ReadMemory-Function.//注意: function可以不用全部导出, 可以只选择你需要的Function.3.用LIB工具(VC6有提供)生成LIB文件(这里是MyTest.lib):lib/def:MyTest.def//默认生成的名称为MyTest.lib.4.到此生成完毕, 连接的时候只需要引用MyTest.lib即可, 但要注意XXX.exe和MyTest.dll要放在同一目录下.可以用gcc--help查看具体的命令etc