2011-03-15 241 views
4

我用CS106库在university.After改变的Visual Studio 2008和Visual Studio 2010,我有建设新项目,还是老问题ones.I认为,新的Visual Studio是不兼容CS106任何人都可以告诉如何解决这个问题?构建问题2010

这是输出:

1>------ Build started: Project: Blank, Configuration: Debug Win32 ------ 1>Build started 3/15/2011 2:03:21 PM. 1>InitializeBuildStatus: 1> Touching "Debug\Blank.unsuccessfulbuild". 1>ClCompile: 1> All outputs are up-to-date. 1>CS106CPPLib.lib(strutils.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(simpio.obj) : error LNK2019: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" ([email protected][email protected]@@SAXXZ) referenced in function "public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::assign(class std::basic_string,class std::allocator > const &,unsigned int,unsigned int)" ([email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) 1>CS106CPPLib.lib(genlib.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(init.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(pcgraphics.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(strutils.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(simpio.obj) : error LNK2019: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" ([email protected][email protected]@@SAXXZ) referenced in function "protected: bool __thiscall std::basic_string,class std::allocator >::_Grow(unsigned int,bool)" ([email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) 1>CS106CPPLib.lib(genlib.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(init.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(pcgraphics.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" ([email protected][email protected]@@SAXXZ) 1>CS106CPPLib.lib(simpio.obj) : error LNK2019: unresolved external symbol "private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)" ([email protected]@[email protected]@@[email protected]@Z) referenced in function "public: void __thiscall std::locale::facet::_Register(void)" ([email protected]@[email protected]@@QAEXXZ) 1>CS106CPPLib.lib(strutils.obj) : error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)" ([email protected]@[email protected]@@[email protected]@Z) 1>CS106CPPLib.lib(simpio.obj) : error LNK2001: unresolved external symbol "long const std::_BADOFF" ([email protected]@@3JB) 1>CS106CPPLib.lib(strutils.obj) : error LNK2001: unresolved external symbol "long const std::_BADOFF" ([email protected]@@3JB) 1>Debug\Blank.exe : fatal error LNK1120: 4 unresolved externals 1> 1>Build FAILED. 1> 1>Time Elapsed 00:00:00.97 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

+1

尝试为人类格式化错误:-)我将它格式化为代码,但CR/LF丢失。我也删除了C++ builder标签,因为这个问题与C++ builder没有任何关系 – 2011-03-15 14:09:30

+2

它只是连接吗?你做了一个完整的重建吗? – Max 2011-03-15 14:10:32

回答

8

这里是解决方案: http://melbsdailydigest.blogspot.com/

1)下载从斯坦福CS106B网站的最新项目之一:

CS106B Assignment 1

2)解压缩项目,并找到它的子目录\ CS106。这是包含CS106程序的所有库(CS106CPPLib.lib)和头文件的文件夹。

3)此文件夹中复制一个子目录,以您的作业文件夹中的一个(例如C:\分配1 \ CS106

4)开的Visual Studio2008,然后点击文件 - >新建 - >项目......当给出选择选择来创建一个新的控制台程序。

5)然后您就可以用多个文件,包括stdafx.h中,stdafx.cpp和任何更早时提示您命名您的项目类似名称的文件的新项目呈现。从项目中删除/删除所有这些文件。

6)右键单击源文件夹,然后选择添加 - >现有项...选择第一个任务文件(Assign1warmup.cpp)。

7)如果你编译在这一点上,你就会明白,它仍然在寻找stdafx.h中预编译的头。我们来解决这个问题。转到Project-> Assignment1 Properties ...(或者任何可能命名的项目)。转至配置属性 - > C/C++ - >预编译头文件的“树”菜单中的选项。在“创建/使用预编译头”选项下,选择“不使用预编译头”的下拉选项。

8)当您在本节的时候,走的时候我们也选择这个项目的头文件的位置。在Configuration Properties-> C/C++ - > General部分下,选择Additional Include Directories选项并使用...浏览并选择之前复制到项目文件夹中的CS106文件夹。

9)一个,你应该改变这里最后一件事是在配置属性 - > C/C++ - >代码生成部分。将默认值(我认为是用于多线程调试.DLL)更改为多线程调试(如果您正在执行发布版本,则只是多线程)。

10.)最后,我们需要让链接器知道在哪里可以找到CS106库文件。要做到这一点,你需要做2个额外的设置。一个是在配置属性 - >连接器 - >常规部分中,您可以在标题为“足够的库目录”的章节中选择其他库文件的位置。您还需要通过配置属性 - >链接器 - >输入下的“附加依赖项”部分将库添加到项目中。只需输入CS106CPPLIB.lib。

注意:我发现在解决方案资源管理器窗口中,您获得的菜单和获取的设置似乎有所不同,具体取决于您的选择。当我选择实际的源文件时,我原本完成了所有更改,但在此时没有链接器菜单。我不得不移动到源文件文件夹级别,以获得额外的菜单,我可以设置我的连接器选项。另外需要注意的是,如果你在较低级别(即Cpp文件)进行设置,它们似乎会取代上一级设置的任何设置。

在这一点上,项目应该通过选择Build-> Rebuild Solution命令来正确构建。 快乐编程!

+0

您的链接不再工作?你可以更新吗? – 2012-06-20 13:42:32

+0

更新了链接 – gkiko 2012-06-22 09:10:16

1

的源代码将有助于解决这个问题。但是......你是否在文件的顶部添加了#include <string>以产生错误?