【发布时间】:2016-07-25 13:44:26
【问题描述】:
在尝试编译 DLL 以用于将在 Windows XP 上运行的程序时,我遇到了几个错误。它们都相似:“GetAddrInfo:未找到标识符”和“FreeAddrInfo:未找到标识符”。我的能力有限(我必须修改自 2012 年以来尚未更新的现有代码。我是一名合作社,所以我的计算机科学学位尚未完成,我可能不知道某些事情)。我在静态库中使用 MFC。我的平台工具集是 Visual Studio 2013 - Windows XP (v120_xp)。我正在使用 Microsoft Visual Studio Professional 2013。我的 StdAfx.h 包含以下代码:
#ifndef WINVER
#define WINVER 0x0501
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#define VC_EXTRALEAN
//...
#include <WinSock2.h>
我收到错误的 Foo.cpp 文件包括以下标头:
#include "stdafx.h"
#include <stdio.h>
#include <WinIoctl.h>
#include <process.h>
#include <Windows.h>
#include <MMSystem.h>
#include <Mstcpip.h>
#include <WS2tcpip.h>
我的 WS2tcpip.h 版本来自 Windows 7.1A SDK。如果我打开它,我可以看到 GetAddrInfo() 和 FreeAddrInfo() 已定义,但无论出于何种原因,VS2013 都没有找到这些定义(尽管它可以找到头文件本身并且没有问题包括他们)。
附加说明:如果我将 StdAfx.h 中的#defines 更改为:
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
并使用常规的 Visual Studio 2013 工具集,编译 DLL 没有问题。不幸的是,DLL 必须在 Windows XP 上工作。我一直找不到任何关于为什么会这样的信息。我的包含可能是在错误的地方吗?
【问题讨论】:
标签: c++ visual-studio-2013 mfc