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
就可以了
刚好电脑上装了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
就可以了
相关文章推荐
- cygwin编译的win32程序不需要cygwin1.dll库的方法
- cygwin编译的win32程序不需要cygwin1.dll库的方法
- cygwin编译的win32程序不需要cygwin1.dll库的方法(1)
- cygwin编译的win32程序不需要cygwin1.dll库的方法(2)
- cygwin 编译 win32 程序 同时不依赖 cygwin1.dll
- win7下用cygwin编译程序出现couldn't allocate heap,win32 error xxx错误的解决办法
- vs2012编译生成的程序在xp系统中显示不是有效的win32程序解决方法
- 去除 Cygwin 编译的程序对Cygwin1.dll的依赖
- cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法
- 在Cygwin编译程序时,出现“ missing /usr/include/ncurses.h”的解决方法
- 使用cygwin编译win32程序
- VS2013编译的用c++写的win32程序兼容性问题
- Dev-C++ 编译程序一闪而过解决方法
- 优化C++程序编译效率的一些方法
- 编译程序出现一个: 可访问性不一致; 产生的原因和解决方法
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
- 使用Docker Hub官方gcc:latest镜像编译C/C++程序以及缩小镜像的方法
- 编译boost程序出现如下错误fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_54.lib'的解决方法
- 初学OpenCV3,运行编程入门上读取并播放视频的原版程序,编译通过但是没有任何输出,已按网上博主各种方法试,还是没有结果,大家看怎么解决?
- 将session存入数据库的方法(摘自“漂泊雪狼”--在asp.net程序开发中避免编译就要重新登录系统的小技巧 )