1

HTTP を介して特定の機能を公開する C++ プログラムを作成する必要があります。そのため、同じためにlibmicrohttpdを使用しようとしていました。現在、このライブラリは C で記述されています。ただし、私は C++ を初めて使用するので、ここに示す C および C++ コードをコンパイルしようとしています。(ここから git clone できます)

ここで、完全に C++ で書かれていないプログラムをコンパイルするために g++ を使用する方法を理解する助けが必要です。および/または上記のリンクされたコードをコンパイルする方法。

PS: Linux での作業
そして最後に、誰かが libmicrohttpd よりも簡単な代替手段を指摘できれば、私はすべて耳にします。

編集から編集:
ようやく機能しました。個々の cpp ファイルを gcc でコンパイルし、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 に答える