在C ++中嵌入libmicrohttpd代码或如何编译这个例子?

时间:2013-11-05 10:30:54

标签: c++ c compilation

我需要创建一个通过HTTP公开某些功能的C ++程序。出于这个原因,我试图使用libmicrohttpd。现在这个库是用C语言编写的。但是我对C ++很新,我正在尝试编译给定here的C和C ++代码。 (Which can be git cloned from here

现在我需要帮助理解如何使用g ++来编译一个完全不是用C ++编写的程序。和/或如何编译上面的链接代码。

PS:在linux上工作 最后,如果有人可以指出比libmicrohttpd更容易的替代方案 - 我全都耳朵。

编辑编辑:
终于搞定了。使用gcc编译各个cpp文件,然后使用g ++链接所有文件。我不知道这是如何起作用的,也许有人可以在下面回复。 我已经编译并链接了以下脚本:

LOC="path/to/directory"
gcc -c httphandler.cpp -o httphandler.o -I $LOC
gcc -c strutil.cpp -o strutil.o -I $LOC
gcc -c api.cpp -o api.o -I $LOC
gcc -c executor.cpp -o executor.o -I $LOC
g++ -o out httphandler.o strutil.o api.o executor.o -lmicrohttpd -lboost_regex

但在最后一步中我收到以下错误:

/usr/bin/ld: strutil.o: undefined reference to symbol '__cxa_free_exception@@CXXABI_1.3'
/usr/bin/ld: note: '__cxa_free_exception@@CXXABI_1.3' is defined in DSO /usr/lib/x86_64-linux-gnu/libstdc++.so.6 so try adding it to the linker command line
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: could not read symbols: Invalid operation

是什么给出了?

1 个答案:

答案 0 :(得分:2)

对于初学者,不要使用g++编译C代码,而是使用gcc。然后只需包含头文件并正常使用这些函数。链接时不要忘记链接从编译libmicrohttpd源文件生成的目标文件。