Visual c++ 是否可以在VS2010或更新的项目中使用VS2003中内置的旧vc6.lib?在一次重复的函数调用中获取LNK2001错误(type_info::name) 我正在研究一个老的C++ Visual Studio 2003项目,它使用静态的.LIB(其中源代码丢失到时间),我想移动到VisualStudio 2010或更新。在2010年尝试构建时,有一系列LNK2001链接器错误,都指向同一个符号:

Visual c++ 是否可以在VS2010或更新的项目中使用VS2003中内置的旧vc6.lib?在一次重复的函数调用中获取LNK2001错误(type_info::name) 我正在研究一个老的C++ Visual Studio 2003项目,它使用静态的.LIB(其中源代码丢失到时间),我想移动到VisualStudio 2010或更新。在2010年尝试构建时,有一系列LNK2001链接器错误,都指向同一个符号:,visual-c++,static-libraries,linker-errors,lnk2001,Visual C++,Static Libraries,Linker Errors,Lnk2001,LNK2001:未解析的外部符号“\uuuu declspec(dllimport)>public:char const*>\uuuuu thiscall type\u info::name(void)const”(\uuuu imp?>name@type_info@@QBEPBDXZ) 在进行一些挖掘之后,似乎在旧版本的MS C++中尝试用旧的静态库构建是麻烦的或不可能的,并且这种特定的错误是因为VS2005 +所使用的更新的MSVCR.DLL对Type信息::名称(Value:Value:V

LNK2001:未解析的外部符号“\uuuu declspec(dllimport)>public:char const*>\uuuuu thiscall type\u info::name(void)const”(\uuuu imp?>name@type_info@@QBEPBDXZ)

在进行一些挖掘之后,似乎在旧版本的MS C++中尝试用旧的静态库构建是麻烦的或不可能的,并且这种特定的错误是因为VS2005 +所使用的更新的MSVCR.DLL对Type信息::名称(Value:Value:V/P>>)有不同的定义。 类型\信息::名称(\类型\信息\节点*)

有一个MSDN论坛问题与同样的问题,这似乎是原来的海报可能已经得到了一个解决方案-他至少得到了它的建设,这是我无法使用的解决办法,把以下代码到项目中:

#include "stdafx.h"
#pragma warning(disable:4273)
struct __type_info_node {
    void *memPtr;
    __type_info_node* next;
};
extern __type_info_node __type_info_root_node;

class type_info {
public:
  __declspec(dllimport) const char* name() const;
  __declspec(dllimport) const char* name(__type_info_node*) const;
};
const char* type_info::name() const {
  return name(&__type_info_root_node);
}
我试着用不同的方式构建代码——插入到现有文件中,一个新文件,然后将其编译成.obj,并使用lib.exe工具用said.obj更新原始的.lib,然后构建,但所有尝试都以原始错误或不同的错误告终——类型_info::name的重新定义错误。我对c/c++&VS相当陌生,所以可能我遗漏了一些东西


有没有人知道如何解决这个问题并构建一个更新版本的VS?还是我一直在使用2003版本?

我个人会咬紧牙关,升级并修复代码,使其与VS2013一起工作。不幸的是,这个旧库的源代码丢失了,因此我无法访问源代码来更改它,我只有.lib文件和头文件。然后你是SOL,我想看看是否有开源的替代品。微软故意破坏C++之间的ABI,以防止二进制编译问题