cygwin编译的win32程序不需要cygwin1.dll库的方法(3)

我这里有一个dll库(文件系统的库)的source files使用了gcc的扩展,和C99的一些特性,使用vc6.0和vs2008编译都是一堆错误。

刚好电脑上装了cygwin,在cygwin下使用makefile能编译通过,但是在win32上调用的话,LoadLibrary都不成功,包括有的人说的用LoadLibraryEx,虽然能加载,但是在使用过程中还是有错误会发生。


在windows下只能用gcc来编译了。将linux下的makefile拷贝过来(之前已经在linux下修改过,编译过了),将gcc编译选项中的-ldl -fPIC去掉,只保留-shared,就可以了,然后make -B -f makefile_windows(为了与linux下的makefile区分开,使用-f编译makefile_windows文件),编译通过,这样就可以编译出在windows下使用的dll库文件了,LoadLibrary没有错误发生。



编译期间有遇到一个错误,不知道gcc编译器预定义了哪些宏,google了下(编译器预定义宏)

cpp -dM /dev/null


然后我只关心WIN之类的宏 cpp -dM /dev/null | grep WIN,就可以列出所有与WIN有关的宏

或者用另外一种方法,写一个简单的test.c程序

#include <stdio.h>

int main(void)
{
        printf("hello,world\n");
}


执行

gcc -dM -E test.c

就可以了


你可能感兴趣的:(windows,linux,gcc,dll,makefile,编译器)