1

我尝试使用mongoose构建一个 C++ 项目,但我不断收到链接器错误。

我尝试使用描述类似症状的现有 SO 问题的答案:什么是未定义的引用/未解决的外部符号错误,我该如何解决?通过#includeC 标头使用外部 C 链接:

//simple_web_server credited to Cesanta Software
#include "stdafx.h"

extern "C" {
#include "mongoose.h"
}  

static const char *s_http_port = "8000";
static struct mg_serve_http_opts s_http_server_opts;

static void ev_handler(struct mg_connection *nc, int ev, void *p) { 
   if (ev == MG_EV_HTTP_REQUEST) {
      mg_serve_http(nc, (struct http_message *) p, s_http_server_opts);
   }
}

int main(void) {
    struct mg_mgr mgr;
    struct mg_connection *nc;

    mg_mgr_init(&mgr, NULL);    // <== this causes linker error
    ...

我不断收到以下链接器错误:

1>------ Build started: Project: simple_web_server02, Configuration: Debug Win32 ------
1>  simple_web_server02.cpp
1>simple_web_server02.obj : error LNK2019: unresolved external symbol _mg_mgr_init referenced in function _main

提供的位置mongoose.h是属性 > VC++ > 包含目录。

我还注意到省略/包括 'extern "C" {...}' 没有明显效果。

任何帮助或建议将不胜感激。

4

1 回答 1

1

原则上,您不应该在包含extern "C"时提供mongoose.h:此头文件包含条件编译语句,以确保在 C++ 项目中使用 “C”链接。

显然,您没有包含链接器的库 (lib)。

编辑:如果您没有下载/构建预编译库,则应mongoose.c根据说明将该文件添加到您的项目中。

于 2016-04-16T21:28:34.297 回答