我已经在互联网上查看了这个问题并且似乎不是一个经常出现的错误。
当我尝试使用g ++编译(我正在使用Ubuntu 12.04发行版)时出现问题,包含lib的主文件,它获取除了MHD_RESPMEM_PERSISTENT变量之外的所有变量和函数:
response = MHD_create_response_from_buffer(strlen(page), (void*)page, MHD_RESPMEM_PERSISTENT);
我已经检查过连接器和用-lmicrohttpd编译的所有内容。 我的Makefile看起来像这样:
CC = g++ -std=c++11
INCLUDE = -I. -I/opt/local/include
CFLAGS = -g -Wall $(INCLUDE)
#CFLAGS = -g -Wall $(INCLUDE) -coverage
LDFLAGS = -L/opt/local/lib -lmicrohttpd
all: $(TARGET)
$(OBJECTS): %.o: %.cc
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET): $(OBJECTS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJECTS) $(LDFLAGS)
我没有附加链接器$ $ Objects,但是没关系。 实际上,这是一个非常奇怪的问题,因为当我在其他PC上安装软件包(libmicrohttpd-dev和libmicrohttpd-dbg)时,它确实没问题,但在某些情况下会出现这个问题。我遇到的唯一解决方案是重新安装操作系统并重新开始,因为一切都很糟糕。
之前在同一台计算机上使用相同的操作系统,但由于我必须格式化它,我不知道如何解决这个问题。
任何想法?。
答案 0 :(得分:0)
MHD_RESPMEM_PERSISTENT已添加到libmicrohttpd 0.9.x中,因此版本0.4.6-1太旧了。
使用Ubuntu,我不知道你究竟如何升级,但是作为libmicrohttpd很少依赖,可能只需添加另一个ubuntu repo,或下载.deb并手动安装依赖项。
或者apt-get删除已安装的版本,并从gnu.org