我已经使用 VS2008/2010 一段时间了,我打算学习使用 Eclipse Helions 进行 C/C++ 开发(主要是 C)。
虽然我对库和包含感到有点困惑。
1) 例如,您如何正确地包含 winsock2.h?我试过这个:
#ifndef CONFIG_H_
#define CONFIG_H_
/* Windows-Build */
#if defined(WIN32) || defined(_WIN32)
#include <winsock2.h>
#endif
SOCKET sock;
#endif /* CONFIG_H_ */
但是编译器不识别 SOCKET。您是否必须在某处手动添加 winsock2 的完整路径?
2) ws2_32.lib 呢?您将其包含在 Eclipse 中的什么位置?您是否也必须添加路径?
3) 主要使用 VS 我是 makefile 的新手。如何包含自定义 makefile?有没有关于从 makefile 开始的好指南?
4) 有没有类似 VS 的智能感知?
这就是我现在能弄清楚的。 谢谢!
编辑: 回应第一个答案:
Building target: Filesharing_core.dll
Invoking: Cygwin C Linker
gcc -L"C:\cygwin\lib\w32api" -shared -o"Filesharing_core.dll" ./src/test.o -llibws2_32.a
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -llibws2_32.a
collect2: ld returned 1 exit status
make: *** [Filesharing_core.dll] Error 1
最佳答案
首先,cygwin 通常使用 GCC 作为编译器。这意味着您不会在 VS 编译器和编辑器中找到特殊的 Windows 支持。准备好弄脏你的手。
请记住,我的 CDT 版本有点旧,而且我没有安装 Cygwin,所以下面的一些内容可能不准确。我提到的所有编译器选项在 gcc manual 中都有详细说明。 .
1) 在您的示例中,没有人定义 WIN32
或 _WIN32
(我认为 GCC 不会为您做这些但一定要检查)。要解决此问题,您必须包含 windows.h
header ,(我认为)它将负责定义正确的宏。您还可以使用 -D
编译器开关(可在您的 makefile 中或通过 eclipse 菜单进行配置)。
如果您在修复定义后遇到丢失的包含错误,我相信 Windows header 位于 C:\cygwin\usr\include\w32api
文件夹中。要将其添加到您的包含路径,只需打开您的项目属性并导航到 C/C++ General > Paths and Symbols
。将路径添加到 Includes
选项卡中的 GNU C
组。根据您配置项目的方式,这可能已经为您完成。
如果您使用自己的 makefile 进行构建,您仍应执行上一步,因为它将允许索引器查找和解析这些 header 。要告诉编译器有关包含文件夹的信息,请使用 -I
开关。
2) 我猜 ws2_32.lib 是 winsock2 的 lib 文件。如果是这种情况,我不完全确定谁负责构建它(是否有 .dll 可以代替使用?)。您可能需要检查您的 c:\cygwin\usr\lib
文件夹或 c:\cygwin\usr\local\lib
。
如果您使用的是托管项目(eclipse 为您构建 makefile),则转到您的项目属性并导航至 C/C++ Build > Settings
。在 Tool Settings
选项卡中,转到链接器部分的 libraries
项。只需在相应的框中添加 lib 文件的名称和文件夹即可。
在您自己的 makefile 中,您需要使用 -l
编译器开关来指定库,并使用 -L
编译器开关来指定搜索路径。
3) 开始使用 makefile 的好地方是 GNU make manual .
关于在 Windows 上运行 Makefile 的一个细节:确保使用 Cygwin 或 MinGW 提供的 shell。否则,像 rm
这样的命令将不会被定义,这会让你的生活变得非常困难。
您可能还想考虑 CMake .它更易于使用,并且可以更好地扩展到更大的项目。
要在您的项目中使用手工制作的 makefile,只需创建一个新的 Makefile 项目
并将您的 Makefile
文件转储到项目文件夹的根目录中。就是这样。
4) 是的,但它不叫智能感知。只需在源代码中的任意位置按 CTRL+Space
即可调出它。
其他好玩的工具可以在右键菜单中找到。我个人的最爱包括 CTRL+SHIFT+R
来查找和打开文件,CTRL+SHIFT+T
来查找和打开类型\变量\函数\定义和 CTRL+O
在打开的文件中查找并转到类型\变量\函数\定义。
索引器有时会有点疯狂(主要是在解析 C++ 代码时)。您可以通过进入顶部的 Windows > Preferences
菜单并导航到 C/C++ > Indexer
项来修改其行为。
希望对您有所帮助。
关于c - 几个 Eclipse C/C++ 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604732/