1

ConvertToUpperCase問題は、私の CS コースで使用されているヘルパー ライブラリに含まれている関数にあると思います。実験用に何かを書こうとしていますが、ヘルパー ライブラリで学習したので、それなしではどうすればよいかわかりません。

完全なエラー エラー:

LNK2019: 未解決の外部シンボル "class std::basic_string,class std::allocator > __cdecl ConvertToUpperCase(class std::basic_string,class std::allocator >)" (?ConvertToUpperCase@@YA?AV?$basic_string@DU?$ char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z) 関数で参照される "public: bool __thiscall Lexicon::containsPrefix(class std::basic_string,class std::allocator > )" (?containsPrefix@Lexicon@@QAE_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

関数はここに含まれており、ここstrutils.h で説明されています

サンプルコード:

#include "stdafx.h"
#include <cstdlib>
#include <string>
#include <iostream>
#include <set>
#include <fstream>
#include "genlib.h"
#include "strutils.h"
#include "simpio.h"
#include "set.h"
#include "lexicon.h"

using namespace std;

/* Function: AddWord1
* -----------------
* This function prompts the user for a code and then
* coverts entry to upper case and adds this word to the code list passed in.
*/
void AddWord1(Lexicon & lex)
{
    cout << "Please enter activity code to add: ";
    string word = ConvertToUpperCase(GetLine()); //may need to remove for code
    lex.add(word);
    cout << word << " added to code list." << endl;
}

説明:

  • はい、これは 2009 年と 2010 年に動作するコードだったので、実装されました。
  • ライブラリは .lib で、現在はsourceForge バージョンを使用しています。
  • VS 2008、前回は VS2005 コンパイルから動作していました。VS2005 と VS2011BETA を試しましたが、まだエラーがあります。
  • 適切な cpp ファイルがプロジェクトに追加されていることを確認しようとしています。そうだと思います。私の genlib.cpp は 2011 年のもので、Linux ユーザー向けの github.com/b33tr00t/cs106lib バージョンとは異なるため、いくつかの違いがあることは理にかなっています。
4

2 に答える 2

1

コンパイルされたコードとヘッダーを含むライブラリが必要です。そのライブラリ (.lib または .obj ファイル) をプロジェクトに追加する必要があります。具体的には、リンカー設定に含める必要があります。

それがない場合は、それらの関数を定義する C++ ソース ファイルが 1 つ以上ある可能性があります。それらをプロジェクトに追加できます。

それらのどれも持っていない場合は、問題があると思います。

于 2012-06-12T20:56:05.763 に答える
0

そのライブラリにもうアクセスできない場合 (クラスに参加していない可能性があるため)、この質問ConvertToUpperCaseのテクニックの 1 つを使用して独自の関数を作成できます。

于 2012-06-12T21:18:35.503 に答える