GCC,链接库,找不到?

| 作业系统:Windows 7 Pro X64 IDE:面向C / C ++开发人员的Eclipse IDE 编译器:MinGW(最新,4.5.2) 编译HelloWorld.c的工作原理;但是当我尝试添加一些外部库时,它会感到窒息。 我将.a和.dll文件添加到我的\'Libraries \'中;将两者的路径都添加到PATH和Library Path中。我还放置了包含文件并配置了包含。据说我拥有的库与win / mingw兼容。他们也有适用于MSVC的不同下载版本。 令人沮丧ld.exe提供了完整路径,并且显然在那里,我具有读取/写入它们的权限。我还包括了没有路径的它们(它们在库路径和路径中)。 我不明白为什么这行不通。 c:/ mingw / bin /../ lib / gcc / mingw32 / 4.5.2 /../../../../ mingw32 / bin / ld.exe:找不到-lC:\\ rhino \\数据\\ lib \\ glfw.dll c:/ mingw / bin /../ lib / gcc / mingw32 / 4.5.2 /../../../../ mingw32 / bin / ld.exe:找不到-lC:\\ rhino \\数据\\ lib \\ libglfwdll.a c:/ mingw / bin /../ lib / gcc / mingw32 / 4.5.2 /../../../../ mingw32 / bin / ld.exe:找不到-lC:\\ rhino \\数据\\ lib \\ libglfw.a
C:\\Users\\rhino>dir C:\\rhino\\data\\lib\\libglfw.a
04/15/2011  05:24 PM            70,384 libglfw.a
更新: 我什至将它们添加到我的C:\\ MinGW \\ lib路径中,但仍然找不到它们。     
已邀请:
Michael Burr指出了在命令行上引用库的正确方法。用
-L
开关给出库的路径,并用
-l
开关给出库的名称(库的名称是文件名,开头不带
lib
,后缀
.a
)。 还有一点要指出的是,您正在尝试同时链接到库的静态(libglfw.a)和动态(glfw.dll)版本,它们都包含在下载中。相反,您应该根据自己的需求/愿望选择一个,并且仅链接到该一个。 链接静态版本非常简单。只需在命令行中添加
-lglfw
。 要使用动态库,您应该使用
-lglfwdll
开关链接到dll(
libglfwdll.a
)的导入库,并从链接命令中省略dll本身。基本上,导入库不包含任何目标代码,而仅包含定义。实际的代码在dll中。该dll将在运行时动态链接。 (要使其正常工作,系统必须能够找到dll;即,它必须位于当前工作目录中,路径中的目录中,或者必须将其目录添加到使用的特殊环境变量中为此;但要使其变得重要,首先必须成功构建可执行文件。)     
我的经验(不包括在Eclipse中的配置方式)是
ld
(gcc将调用它)想要没有
lib
前缀或
.a
扩展名的库名。尝试:
gcc -LC:\\rhino\\data\\libs -LC:\\rhino\\data\\lib -oTestC.exe TestC.o -lglfw -lglfwdll
我不确定
glfw.dll
文件是否应列为库;该DLL的导入库(我假设是libglfwdll.lib)应负责链接到DLL。     
尝试这个:
gcc -LC:\\rhino\\data\\libs -LC:\\rhino\\data\\lib -oTestC.exe TestC.o -lglfw libglfw.a libglfwdll.a
    

要回复问题请先登录注册