您的位置:首页 > 其它

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

2011-11-27 19:26 363 查看
我这里有一个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

就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐