本人下载的是Eclipse C/C++ IDE for Neon.3,下载页面是:http://www.eclipse.org/cdt/downloads.php。

1. 运行eclipse后,在Help中打开Install New Software,在列表中可以找到“……/cdt/release/9.2/r”,然后选择要安装的项目,其实对列表中内容是不大了解细节的,所以就全部选择了。

2. 下载MinGW Installer并运行后,可以选择全部项目安装,也可以去掉“mingw32-gcc-ada”和“mingw32-gcc-fortran”两项。

完成后在系统环境配置里的path项中添加mingw的bin目录路径。

3. eclipse打开windows->Preferences->C/C++->New C/C++ Project wizard,把几个project的Toolchains选择成MingGW GCC后点,点“Make toolchain preferred”。

再选择之 下的Makefile project,选中PE Windows Parse。

--- 其它 ----------------------------------------------------

1. 如果存在第三方开发库需要调用,可以把h文件或者.a文件等复制到代码目录,也可在工程属性中进行配置。

(1)Include文件配置:Project->Properties->C/C++ Build->Settings->GCC C++ Compiler和GCC C Compiler中的Includes中,添加额外的include目录。

(2)Lib配置:Project->Properties->C/C++ Build->Settings->MingGW C++ Linker中的Libraries中,下方“-L”添加额外的lib目录,上方“-l”添加所使用的lib库名称。

2. 如果是比较通用的开发库,不想在每次项目建立后配置include和lib目录,可以在eclipse的环境配置中进行配置。

打开Window->Preferences->C/C++->Build->Environment,添加以下的变量:

(1)CPLUS_INCLUDE_PATH:值为对应的include目录路径

(1)C_INCLUDE_PATH:值为对应的include目录路径

(1)LIBRARY_PATH:值为对应的.a目录路径

3. 如果要调用VC生成的DLL文件,需要生成.a文件才可以使用。也有人说mingw4.6.2中lib和vc的lib是通用的,待确认。

VC调用mingw生成的DLL也是一样,要生成lib文件来调用。

生成.a文件可以使用reimp、pexports、dlltool等工具,参考以下命令:

(1)制作def
    调用 pexports mylib.dll | sed "s/_//" > mylib.def (sed部分去除函数名前的_)

(2)生成a
    需要mylib.dll和mylib.def
    dlltool -U -D mylib.dll -d mylib.def -l libmylib.a (注意,这个-U绝对不能少)

这样就会生成库文件libmylib.a文件。

(3)通过a调用dll

--- 某些错误 ----------------------------------------------------

1. 提示undefined reference to winmain@16这样的提示的,需要在项目属性的Linker的Libraries中添加mingw32库,并且顺序放在最前面。

------------------------------------------------------------------

MinGW 下使用和创建 DLL 倒是要特别注意,问题主要集中在 g++ 编译器(C++ 的 GNU 版本编译器)对于 DLL 的函数输入以及 输出的名称修饰、调用协议上和 VC 编译器是有很大区别的。

1、MinGW 如何使用一个标准的 DLL。这里标准 DLL 指的是采用 __stdcall 调用协议、并且导出函数名称干干净净, 没有函数名尾部的 @nn、没有函数名头部的下划线的。MinGW 的 g++ 程序中,对于需要从 DLL 中导入的函数,声明时必须要用 extern "C", 但不要用 __declspec(dllimport),虽然 g++ 支持,但是一旦你使用,则 g++ 在链接时会自动强制在需要导入的函数名前加 _imp__ 前缀, 导致链接时找不到函数名错误。所以,我们其实完全不需要用 __declspec(dllimport)。另一方面,gcc/g++ 编译器遇到代码中 __stdcall 修饰的函数名, 会自动将其函数名在链接时设置为函数名@nn,nn 是函数参数栈字节数。
另外,gcc/g++ 编译器/链接器在链接时其实不需要 DLL 的导入库(import lib), 因为它们可以直接从 DLL 链接,这样更加方便,省去了很多从 DLL 如何生成符合格式要求的 .a 导入库等问题。 只需要在 gcc/g++ 参数中加入 -Wl,--enable-stdcall-fixup -L../../Bin/ -lDLL文件名(不含.dll)即可直接从 DLL 文件本身完成链接。 这里要注意,-Wl参数指示 g++ 链接器需要采用后面的链接控制参数(以逗号分隔),--enable-stdcall-fixup 告诉 g++ 链接器需要导入的 DLL 函数 的名字需要自动在尾部加上 @nn 格式的后缀,以便符合 gcc/g++ 对 __stdcall 函数名的扩展规范。-L 指定 DLL 文件所在目录, -l 指定 DLL 文件名称,不带 .dll。如果不加 --enable-stdcall-fixup,gcc/g++ 总是会报链接错误, 因为 gcc/g++ 将代码中需要从 DLL 导入的函数名后面都强制加了 @nn,但是 DLL 中的函数名不带 @nn, 没有 --enable-stdcall-fixup,很有可能就会出错。即时不出错,也会有很多警告,很有可能会导致程序 crash! 注,在 NetBeans CDT 中,-Wl,--enable-stdcall-fixup -L -l 这样的参数在链接器参数设置中指定。
2、MinGW 如何创建一个标准的 DLL。MinGW 中创建标准 DLL,应该使用 __declspec(dllexport), 包括 extern "C" 等都是和 VC 一样的。但要注意,这样编译链接生成的 DLL,导出的函数名尾部都带有 @nn, 为了要去除它们,必须在链接器参数设置中使用 -Wl,--kill-at,它告诉链接器创建 DLL 时导出的函数名尾部不要带有 @nn。 注,在 NetBeans CDT 中,上面这个参数同样是在链接器参数设置中指定。
综上,如果创建一个 DLL,同时这个 DLL 又需要导入其他 DLL 的函数,参数就可以统一为 -Wl,--kill-at,--enable-stdcall-fixup -L -l 这样了,很方便。

Eclipse cdt mingw配置记录的更多相关文章

  1. Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解

    http://hi.baidu.com/ltb6w/item/3a51f11926fda60ce75c361d Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解 ...

  2. eclipse中配置c++开发环境 Eclipse + CDT + MinGW

    转自eclipse中配置c++开发环境 Eclipse + CDT + MinGW 基本框架:Eclipse + CDT + MinGW 背景知识: CDT:CDT 是完全用 Java 实现的开放源码 ...

  3. 在Windows下用Eclipse+CDT+MinGW搭建C++开发平台

    本文提供了在Windows下用Eclipse+CDT+MinGW搭建C / C++开发平台的方法, 测试平台为Windows XP Sp2 CHS.   以下软件均为Windows平台下的版本. 1. ...

  4. eclipse+cdt+minGW (C/C++ 编译)

    1. 安装Eclipse CDT 方法1: 已安装Eclipse的话,可以通过菜单Help->Install New Software,安装CDT插件. 点击ADD后 Name:CDT    L ...

  5. 详解小白利用eclipse+CDT+MinGW搭建C++开发环境

    安装JDK.安装Eclipse     2.打开Eclipse 找到“help”下的“Eclipse marketplace” 如图:    3.选择相应的C插件: 因为安装过所以显示installe ...

  6. Windowd系统下Eclipse CDT+MinGW快速搭建C/C++开发环境

    安装MinGW后,最简单的配置:Window -> Preferences -> C/C++ -> Build -> Environment添加Path : $PATH;D:\ ...

  7. 转: 使用MinGW + Eclipse CDT进行C++开发的配置方法

    使用MinGW + Eclipse CDT进行C++开发的配置方法 1 2 3 4 5 6 分步阅读 Eclipse作为开源的IDE,可以用来高效开发Java.C++.C等程序.本文介绍如何在Wind ...

  8. Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)

     Eclipse.MinGW.JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法) 问题背景:之前的JNI编程都是基于And ...

  9. 如何在Ubuntu中使用Eclipse + CDT开发C/C++程序

    在Ubuntu中安装Eclipse和CDT步骤如下: 1. 下载资源(都下载到/home/maxw/Download/Eclipse下)    A. 下载JRE(Java Runtime Enviro ...

随机推荐

  1. centos针对postgres出现的postgresql Ident authentication failed for user

    首先:将/var/lib/..../pg_hba.conf文件中的indent全修改为trust即可. #local   all             all                    ...

  2. SQL Server变量赋值的方法

    SQL Server变量赋值我们经常会遇到,下面就为您介绍SQL Server变量赋值的两种方法,希望可以对您学习SQL Server变量赋值有所帮助. SQL Server中对已经定义的SQL Se ...

  3. 什么是gcd

    概述 我将分四步来带大家研究研究程序的并发计算. 第一步是主要的串行程序,然后使用GCD把它并行计算化.假设你想顺着步骤来尝试这些程序的话,能够下载源代码. 注意.别执行imagegcd2.m,这是个 ...

  4. 安装MacOS到虚拟机

    [TOC] 系统版本历史 4. 升级系统到10.12.6版本 时间:2017年9月21日 15:58:55 大小:VMDK(7.63 GB) 变动: 升级系统到10.12.6版本 3. 降低内存到6G ...

  5. appearance 设置公共属性

    //设置公共TabBarItem 的属性 [UITabBarItem appearance] //设置公共NavigationBar 的属性 [UIBarButtonItem appearance]

  6. Lua基本函数库 【转】

    转自:http://www.cnblogs.com/whiteyun/archive/2009/08/12/1543184.html 基本函数库为Lua内置的函数库,不需要额外装载 assert (v ...

  7. CGI是什么 搜索了这么多,大致看明白了保留下来。

    转自:http://blog.chinaunix.net/uid-13408389-id-2894933.html 分类: CGI是什么 CGI是CommonGatewayInterface 的简称. ...

  8. 线性判别函数-Fisher 线性判别

    这是我在上模式识别课程时的内容,也有参考这里. 线性判别函数的基本概念 判别函数为线性的情况的一般表达式 式中x是d 维特征向量,又称样本向量, 称为权向量, 分别表示为 是个常数,称为阈值权. 设样 ...

  9. Python修饰器的函数式编程(转)

    From:http://coolshell.cn/articles/11265.html 作者:陈皓 Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Desi ...

  10. Map 和 javaBean转换

    package com.siang.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.bean ...