c - 即使包含 mongoose.h 也 undefined reference

标签 c windows compiler-errors undefined-reference mongoose-web-server

我正在尝试运行 mongoose c 服务器示例,但是当我尝试编译这些示例时。我收到以下错误。如果我将其包含在标题中,这些引用怎么会丢失?我是在windows下用mingw编译的。

gcc echo_server.c -out echo_server
echo_server.c:(.text+0x35): undefined reference to `mg_send'
echo_server.c:(.text+0x4a): undefined reference to `mbuf_remove'
echo_server.c:(.text+0x7f): undefined reference to `mg_mgr_init'
echo_server.c:(.text+0x9b): undefined reference to `mg_bind'
echo_server.c:(.text+0xb7): undefined reference to `mg_bind'
echo_server.c:(.text+0xe7): undefined reference to `mg_mgr_poll'

这是echo_server.c

#include "mongoose.h"

static void ev_handler(struct mg_connection *nc, int ev, void *p) {
  struct mbuf *io = &nc->recv_mbuf;
  (void) p;

  switch (ev) {
    case MG_EV_RECV:
      mg_send(nc, io->buf, io->len);  // Echo message back
      mbuf_remove(io, io->len);        // Discard message from recv buffer
      break;
    default:
      break;
  }
}

int main(void) {
  struct mg_mgr mgr;
  const char *port1 = "1234", *port2 = "127.0.0.1:17000";

  mg_mgr_init(&mgr, NULL);
  mg_bind(&mgr, port1, ev_handler);
  mg_bind(&mgr, port2, ev_handler);

  printf("Starting echo mgr on ports %s, %s\n", port1, port2);
  for (;;) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);

  return 0;
}

最佳答案

您还需要确保链接到 Mongoose 库。 -l 标志用于(与 gcc 一起)指定要链接的库,然后直接给出名称:-lmongoose

完整的命令行命令是:

gcc -lmongooose echo_server.c -out echo_server

编辑:OP说这不起作用,因为“mingw说它找不到它。”

您可能还需要添加库搜索路径标志 -L 以帮助 gcc 找到您尝试链接的库。使用方法如下:

gcc -L C:\path\to\library -lmongoose echo_server.c -out echo_server

如果这仍然不能解决OP的问题,此页面可能有更多信息:http://www.mingw.org/wiki/HOWTO_Specify_the_Location_of_Libraries_for_use_with_MinGW

关于c - 即使包含 mongoose.h 也 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35971118/

相关文章:

java - 将自定义文件扩展名与 Windows 中的 Java 应用程序相关联

excel - 为什么 Excel 有时会产生 'incorrect' 错误消息?

c# - C# Hello World 不编译

android - Hashmap有什么问题

c# - 如何从自定义 Windows Phone 8.1.app 调用系统摄像头

c - 指针寻址行为

c - 跳过 for 循环的一次迭代

c - FFTW 计划例程返回 null

Python - 安装模块时如何更改默认路径?

c - 使用 fwrite 和双指针将二维数组输出到文件