MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行时间,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时间扩展。该功能是 Windows32 API 不具备的。下一个组成部分是 w32api 包,它是一组可以使用 Windows32 API 的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows32 API 功能。

MinGW安装图文教程:

下载之后安装一下(注意:这个安装并没有安装MinGW)

安装玩下载程序后,打开。

点击Continue进行安装

下载安装完之后设置环境变量
设置环境变量。
  a. 鼠标右击桌面“计算机”(WindowsXp是“我的电脑”)->“属性”
  b. WindowsXP时,在新弹出的属性窗口,选择“高级”->“环境变量”。
   Windows7时,在新弹出的属性窗口,选择左侧的“高级系统设置”,在新弹出的属性窗口,选择“高级”->“环境变量”。
  c. 把MinGW安装目录的bin目录的路径追加到PATH里,然后确定。
注意:箭头指的两个分号一定要加上并且分号一定要在英文输入模式下输入

最后在CMD中输入gcc -v,看看有没有安装成功,如果出现一下画面说明安装成功

改系统环境变量不是很好, 新增一个用户Path变量就OK了, 不止一次遇到系统变量被删除的人突然发现命令提示符N多命令不好使了

基本用法:
在mingw环境中生成和使用dll都是十分方便的。
1.生成dll
gcc(g++) -shared -o test.dll test.c(test.cpp)
通过该命令生成test.dll,将导出test.c中非静态的函数和相关的类。

(注by asper:该命令行在处理jni涉及的dll时无效)
我使用微软C++编译器,cl命令对带有空格的路径也是无效的,需要用""括住

2.连接dll到exe中
mingw使用dll的方式和静态库.a的方式是一样的,连接的时候只需要加上-ltest即可,没有lib前缀的要求。
3.编写jni调用的dll
有办法了! 是gcc少了行参数。 如下:
gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Wl,--add-stdcall-alias -shared -o call.dll call.c
参数:-Wl,--add-stdcall-alias 可以为函数加上标准调用前缀(stdcall @nn)。
这样编译出的dll就可以了。都知道win32中dll中的函数要求有标准调用前缀,在JNI中不方便手动处理这个,Sun又没说清楚这事由编译器办。所以搞得我很郁闷。找了大半个月,终于在一个很古老的网页上找到答案。

基本上和VC的界面差不多 学习C语言用的最多的还是VC++ 6.0

点赞(0)

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部