1

this is a pretty simple code that just is coming up with an error even though I have it written the same way other people doing the same code have it

1>assigntment5.obj : error LNK2019: unresolved external symbol "class std::basic_string,class std::allocator > __cdecl promptForString(class std::basic_string,class std::allocator >)" (?promptForString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z) referenced in function _main 1>c:\users\aweb\documents\visual studio 2010\Projects\Assignment5\Debug\Assignment5.exe : fatal error LNK1120: 1 unresolved externals

the .cpp file

#include <iostream>
#include <string>
#include "anw65_Library.h"

using namespace std;

string promptForString(string prompt);

int main()
{
string name = promptForString("What is the filename?: ");

system("pause");
return 0;
}   

the .h file

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

static string promptFromString(string prompt)
{
string filename;
cout << prompt;
cin >> filename;
return filename;
}  
4

3 回答 3

3

你从不定义prompt**For**String,你定义了prompt**From**String。拼写很重要。还:

  1. 为什么要在 .h 文件中定义函数?只需在此处声明它们并在 .cpp 文件中定义它们(除非它们是模板)。
  2. 不要放入using namespace <whatever>头文件。您只是在破坏包含您的标头的任何内容的全局名称空间。
  3. 您无需将该功能标记为static.
于 2013-02-22T02:21:01.487 回答
0

这一行:

string promptForString(string prompt);

在您的 .cpp 文件中导致问题。它是通过外部链接向前定义一个功能。但是,您的标题的功能是:

static string promptFromString(string prompt)
{
...

这里的重要部分是static. static意味着它具有内部链接。要么摆脱 ,要么static摆脱前向声明,因为函数不能同时具有内部和外部链接。

编辑:另外,Ed S. 很好地发现了您的错字。

于 2013-02-22T02:22:35.093 回答
0

当您在文件中定义promptForString()时,您从 main 函数调用。promptFromString().h

您可能想要更改其中一个定义。

于 2013-02-22T02:23:24.850 回答