1

我需要创建一个通过 HTTP 公开某些功能的 C++ 程序。出于这个原因,我试图使用libmicrohttpd 来做同样的事情。现在这个库是用 C 编写的。但是我对 C++ 有点陌生,我正在尝试编译这里给出的 C 和 C++代码。(可以从这里 git 克隆

现在我需要帮助来理解如何使用 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

是什么赋予了?

4

1 回答 1

2

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

于 2013-11-05T10:34:12.187 回答