Windows下编译Mongoose的hello.c
Posted
技术标签:
【中文标题】Windows下编译Mongoose的hello.c【英文标题】:Compiling Mongoose's hello.c under Windows 【发布时间】:2013-03-20 11:48:43 【问题描述】:我正在尝试在 Windows 下从 Mongoose 编译包含的 hello.c 示例。我正在使用 Microsoft Visual 命令提示符,并且已将 mongoose.c 和 mongoose.h 复制到与 hello.c 示例相同的目录中。
当我写“cl hello.c”时,我得到以下输出/错误:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
hello.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:hello.exe
hello.obj
hello.obj : error LNK2019: unresolved external symbol _mg_stop referenced in function _main
hello.obj : error LNK2019: unresolved external symbol _mg_start referenced in function _main
hello.obj : error LNK2019: unresolved external symbol _mg_printf referenced in function _begin_request_handler
hello.obj : error LNK2019: unresolved external symbol _snprintf referenced in function _begin_request_handler
hello.obj : error LNK2019: unresolved external symbol _mg_get_request_info referenced in function _begin_request_handler
hello.exe : fatal error LNK1120: 5 unresolved externals
示例中包含Makefile,我尝试使用 Makefile 进行构建,但不明白如何执行此操作。如果我尝试“nmake hello.exe”。我得到以下输出/错误:
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
cl -W -Wall -I.. -pthread -g hello.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
cl : Command line error D8004 : '/W' requires an argument
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
编辑 我还尝试按照user manual 中的说明进行编译,在 Windows 上应转换为“cl hello.c mongoose.c -o hello.exe”,但随后出现以下错误消息:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
hello.c
mongoose.c
Generating Code...
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:hello.exe
/out:hello.exe
hello.obj
mongoose.obj
hello.obj : error LNK2019: unresolved external symbol _snprintf referenced in function _begin_request_handler
hello.exe : fatal error LNK1120: 1 unresolved externals
是否有人对在 Windows 下为 Mongoose 编译 hello.c 示例需要采取哪些步骤提出建议?
【问题讨论】:
【参考方案1】:我发现上面第三次尝试的问题是在 Visual Studio 10 使用的 C 版本中,“_snprintf”已被弃用并替换为“_snprintf_s”。因此,我用 _snprintf_s 替换了“_snprintf”的一次出现并且成功了。
【讨论】:
【参考方案2】:您似乎没有为 mongoose 指定与库(DLL,无论它实际上是什么)的链接。这就是为什么你有未解决的外部因素。它需要知道在哪里可以找到它们,以便可执行文件可以在运行时找到它们(如果它是动态链接的)或将代码包含在 .exe 中(如果是静态完成的)。
【讨论】:
以上是关于Windows下编译Mongoose的hello.c的主要内容,如果未能解决你的问题,请参考以下文章
利用文本编辑器输入Hello.java,并在JDK环境下编译和运行。请将程序编译运行的结果