c++ - 将硅网络服务器与 libmicrohttpd 后端链接

标签 c++ clang c++14 freebsd

我正在尝试编译硅网络服务器 hello world example在 FreeBSD 10.2 RELEASE 上使用 clang++38。该框架使用c++14。我已经安装了 libmicrohttpd。

当我尝试使用编译程序时

clang++38 -O2 -Wall -std=c++14 -I/usr/local/include -L/usr/local/lib -lmicrohttpd -o sws01 sws01.cpp

我收到错误

In file included from sws01.cpp:2:
/usr/local/include/silicon/backends/mhd.hh:158:22: error: use of undeclared identifier 'MHD_http_unescape'
    value.resize(MHD_http_unescape(&value[0]));

sws01.cpp:

#include <silicon/api.hh>
#include <silicon/backends/mhd.hh>
#include "symbols.hpp"

using namespace sl;
using namespace s;

auto hello_api = http_api(
        GET / _hello = [](){ return D(_message = "Hello from Silicon Webserver!"); }
);

int main() {
    sl::mhd_json_serve(hello_api, 9876);
}

我尝试应用此SO thread回答但 -Wl 并指定 /usr/local/lib/libmicrohttpd.a 就像

clang++38 -O2 -Wall -std=c++14 -I/usr/local/include /usr/local/lib/libmicrohttpd.a -o sws01 sws01.cpp

也没有用。

使用 xcode 7.3 在 os x 上工作。

最佳答案

事实证明,FreeBSD ports-system 附带的 libmicrohttpd-server 是版本。 0.9.37 和 libmicrohttpd.so 没有 MHD_http_unescape(),但 libmicrohttpd.a 有。目前最新的是 0.9.48。用这个替换 ports-version 解决了我的编译问题。

关于c++ - 将硅网络服务器与 libmicrohttpd 后端链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202691/

相关文章:

c++ - 从基类对象的 vector 中获取特定派生类的对象

c++ - 在 C++ 中重用异常处理代码

linker - 使用Clang和CMake时使用LLVM链接器

c++ - Boost 库在 Windows 上未正确链接

c++ - 使用 Clang 的函数原型(prototype)中不允许使用“自动”

c++ - Integrity 中 X.cpp/X.hpp 文件的奇怪行为

c# - 全局钩子(Hook) DLL 仅在 C# 主窗口处于事件/前景时调用 C# 回调方法

c++ - 使用 `__builtin_expect` 会影响程序语义吗?

c++ - gdb 找不到由 clang++ 编译的源文件

C++ 14从不同的构造函数(同一类)调用构造函数[具有不同的参数]