从 Visual Studio 2005 移植到 2008 或更高版本

Posted

技术标签:

【中文标题】从 Visual Studio 2005 移植到 2008 或更高版本【英文标题】:Porting from Visual Studio 2005 to 2008 or above 【发布时间】:2015-01-04 09:23:51 【问题描述】:

我有一个使用 Visual Studio 2005 实现的项目。我需要再次编译它,但我不再拥有 Visual Studio 2005。我只能访问 VS 2008、2010 和 2012。当我编译代码时,我遇到了一些链接器错误,其中许多是相同的。如下:

Error   48  error LNK2001: unresolved external symbol "unsigned int (__cdecl* ATL::g_pfnGetThreadACP)(void)" (?g_pfnGetThreadACP@ATL@@3P6AIXZEA)    FEMesh_noacis_AMD64.lib

如果有人可以帮助我修复此链接器错误,我将不胜感激?

【问题讨论】:

您是否检查过它所要求的库确实是使用相同版本的 Visual Studio 构建的? 你是对的...该库是用 VS 2005 编译的。我也无法访问该库代码,它是公司内部代码,在互联网上找不到 :(跨度> 我不认为 VC2005 和 VC2008 之间的名称已更改(或此后!)所以也许您只是缺少链接器设置中对库的 lib 引用? (我一直通过在 Debug 构建中添加一个库,然后看着 Release 构建失败......) 【参考方案1】:

显然,您希望通过使用匹配工具重建丢失的代码来解决此问题...但是,如果这是您和成功执行之间的唯一问题,您可以尝试自己定义丢失的符号以满足链接器:

namespace ATL

    extern UINT (*g_pfnGetThreadACP)();

    UINT PrivateGetThreadACP()
    
        CPINFOEX Information;
        ATLVERIFY(GetCPInfoEx(CP_THREAD_ACP, 0, &Information));
        return Information.CodePage;
    

    UINT (*g_pfnGetThreadACP)() = PrivateGetThreadACP;
;

【讨论】:

太棒了!它真的解决了我的问题! :D

以上是关于从 Visual Studio 2005 移植到 2008 或更高版本的主要内容,如果未能解决你的问题,请参考以下文章

将 Android 应用程序从 Android Studio 移植到 Microsoft Visual Studio

从 Visual Studio 2005 迁移到 2008 和 .NET 2.0

将 std::wstring 从 Visual Studio 移植到 mingw gcc

C++ - 将 C++ 代码从 Visual Studio 移植到 Linux Eclipse IDE 时出现问题

从 Visual Studio 2008 迁移到 2015

将 Visual Studio 2005 sln 迁移到 2008,在 LIB 环境变量中使用 vc98 路径发出警告,如何解决?