如何设置 Dev-C++ 编译器以使用 C 库? [复制]
Posted
技术标签:
【中文标题】如何设置 Dev-C++ 编译器以使用 C 库? [复制]【英文标题】:How do I set Dev-C++ compiler to work with a C library? [duplicate] 【发布时间】:2014-11-08 23:23:45 【问题描述】:我已经为 Dev C++ 下载并设置了 libjpeg 包。我已确保它是最新版本。 然后我在 Dev C++ 中添加了相应的库:
工具 > 编译器 > 目录 我还将编译器设置为 TDM-GCC 4.8.1 64 位版本
我添加的内容: 斌: 开发-Cpp\bin
图书馆: 开发-Cpp\lib
C 包括: 开发-Cpp\include
C++ 包括: 开发-Cpp\include
我还在项目参数中添加了一个链接 链接器: 开发-Cpp/lib/libjpeg.a
我的代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
extern "C"
#include <jpeglib.h>
#include <jerror.h>
int main(void)
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(& jerr);
jpeg_create_decompress(& cinfo);
return 0;
我收到错误:
D:\FP\main.o In function `main':
14 D:\FP\main.cpp undefined reference to `jpeg_std_error'
15 D:\FP\main.cpp undefined reference to `jpeg_CreateDecompress'
...
我看过这个post 似乎相关,但我不知道如何将它应用到 C++。 在我链接到的那个论坛中,当评论者告诉 OP 指定用于库的编译器时,问题以某种方式解决了。 IE。 GCC 用于 C 和 G++ 用于 C++。我遇到了和他一样的错误,所以我认为它是相关的,但我不确定如何重新配置它。
我看过帖子:
What is an undefined reference/unresolved external symbol error and how do I fix it?
但这并不能回答我的问题,因为这是未定义引用的一般答案。
【问题讨论】:
“因为这是未定义引用的一般答案” 是的,阅读它 谢谢你的链接,我刚刚看完了。它的信息量很大,但似乎没有我正在寻找的答案。在 C++ 中有对 C 库的引用,我已经完成了建议的操作。然而,有一件事似乎确实相关,那就是“在 gcc 中,您将文件添加到命令行”——关于链接。这与我在问题中提到的类似,但没有详细说明如何去做。这是我想知道的。 @Klik 如何将链接器标志或对象添加到链接应在您的 IDE 文档中提及。 @PeterT 这听起来像是一些很棒的术语,我可以用谷歌搜索。由于我一直在寻找 5 个小时的大部分时间,您能否帮我确认这确实是一个链接问题?即使我已经在项目选项中添加了链接参数。 @Klik 是的,它找到了标题和所有符号,它将jpeg_std_error
和 jpeg_CreateDecompress
标记为定义为“其他地方”的符号。在链接阶段,它没有在任何地方找到它们。正如链接问题的答案应该清楚。
【参考方案1】:
您已设置 IDE 以在正确的位置查找库,但您尚未设置项目以实际链接 libjpeg。在您的项目设置中,您会找到这样做的地方。
【讨论】:
我的错误,我忘了提及我的链接。我尝试过链接:Dev-Cpp/lib/libjpeg.a 和 Dev-Cpp/lib/libjpeg.dll.a。我试过分别做每一个,然后一起做。 @Klik:远程我无法看到你做错了什么。您可以显示一堆项目设置的屏幕截图,但这超出了问答存储库的范围。您是否尝试过在聊天室或论坛上提问? 在过去的三个小时里,我一直在尝试设置 libjpeg。我认为这是一个能够回答我的问题的论坛?你有什么建议给我吗? 这个链接的问题没有回答我的问题。我的问题是关于在 Dev C++ 中实现 libjpeg。这特别棘手,因为 libjpeg 是一个 C 库,而我使用的是 C++ 代码。在我链接到的另一个论坛中,当评论者告诉 OP 指定用于库的编译器时,问题以某种方式解决了。 “这特别棘手,因为 libjpeg 是一个 C 库,而我使用的是 C++ 代码。” 这一点也不棘手。以上是关于如何设置 Dev-C++ 编译器以使用 C 库? [复制]的主要内容,如果未能解决你的问题,请参考以下文章