无法将 LIBEVENT 链接为 C++
Posted
技术标签:
【中文标题】无法将 LIBEVENT 链接为 C++【英文标题】:Cannot link LIBEVENT as C++ 【发布时间】:2011-11-18 17:02:20 【问题描述】:为什么这不起作用,文件test.c
:
#include <event.h>
int main(void)
event_init();
return 0;
然后:
gcc -o test.o -c test.c
运行正常,但是
链接:
g++ -o test -levent test.o
产生
test.o: In function `main':
test.c:(.text+0x5): undefined reference to `event_init'
collect2: ld returned 1 exit status
所以它不能链接为C++
。如何解决这个问题?我需要将其链接为C++
并编译为C
。
【问题讨论】:
g++ -o test test.o -levent
...
是的,订单很重要
试试g++ -o test test.o -levent
。
【参考方案1】:
这个问题已经被问过很多次了。在 Linux 上,您应该在编译命令中将库放在对象和源文件之后。所以试试
g++ -Wall -g -c mytest.cc
g++ -Wall -g mytest.o -levent -o mytest
避免调用您的测试程序test
,这是一个现有的实用程序或内置shell。
作为新手,请记住始终在编译时询问-Wall
和调试-g
的所有警告并学习使用gdb
【讨论】:
我反对编译器警告和调试器是“新手”工具。 每个人都应该强制编译器警告。 对不起,我不是那个意思(请记住,我不是以英语为母语的人)。我只是说新手经常忘记启用警告和调试。一旦您对 C 或 C++ 编程更加熟练,您就不会忘记它们! 是的,这是有道理的。 “作为新手,记得启用 ...”:-) 如果这个问题被问了很多次,你为什么还要回答呢? 对象规则后why库的解释:webpages.charter.net/ppluzhnikov/linker.html以上是关于无法将 LIBEVENT 链接为 C++的主要内容,如果未能解决你的问题,请参考以下文章
我可以将 C++11 lambda 与 libevent 一起使用吗?