Przesiadka z code blocks na Visual Studio C++ - unresolved external symbol

0

Witam!

"Przenoszę" program spod code::blocks (linux) na VC++ (windows), ze względu na bibliotekę ExcelFormat.

Po wyeliminowaniu całej masy niedociągnięć, których czepiał się VC zostało mi jedno...

 1>Test.obj : error LNK2019: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall YExcel::BasicExcelCell::ConvertCellToString(void)" (?ConvertCellToString@BasicExcelCell@YExcel@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "void __cdecl BadajArkusz(class YExcel::BasicExcel &,int)" (?BadajArkusz@@YAXAAVBasicExcel@YExcel@@H@Z)

Na pewno ten błąd występuje w mojej funkcji (na code::blocks oczywiście działa...):

void BadajArkusz(BasicExcel &arkusz, int ile_ma_sie_zgadzac)
{
    BasicExcelWorksheet *sheet;
    int TotalCols, TotalRows, indeks_kolumny_ktora_nie_pasuje;
    BasicExcelCell *cell;

    sheet = arkusz.GetWorksheet(0);
    TotalCols = sheet->GetTotalCols();
    TotalRows = sheet->GetTotalRows();

    int licznik = 0;
    int row, col;
    vector<string> vWiersze, vWiersz1, vWiersz2;
    vector<int> vNumerWiersza;

    string wiersz;

    for(row=0; row <= TotalRows; row++)
    {
        for(col=0; col <= TotalCols; col++)
        {
            cell = sheet->Cell(row, col);

            if(cell->Type() == 1 && cell->GetInteger() < 4)		// type == integer ?
            {
                wiersz += cell->ConvertCellToString();
                if(col != TotalCols - 1) wiersz += " ";
            }
        }

        if(!wiersz.empty())
        {
            vWiersze.push_back(wiersz);
            vNumerWiersza.push_back(cell->GetRow());
        }

        wiersz = "";
    }

    for(unsigned i = 0; i < vWiersze.size(); i++)
    {
        for(unsigned j = i+1; j < vWiersze.size(); j++)
        {
            if(i != j)
            {
                vWiersz1 = split(vWiersze[i], ' ');
                vWiersz2 = split(vWiersze[j], ' ');

                for(vector<string>::iterator it_W1 = vWiersz1.begin(), it_W2 = vWiersz2.begin(); it_W1 != vWiersz1.end(), it_W2 != vWiersz2.end(); ++it_W1, ++it_W2)
                {
                    //cout << "Porownuje: " << *it_W1 << " do " << *it_W2 << " w wierszu: " << row << " i " << row2 << endl;

                    if(*it_W1 == *it_W2)
                        licznik++;
                    else
                        indeks_kolumny_ktora_nie_pasuje = licznik+1;
                }

                if(licznik == ile_ma_sie_zgadzac)
                cout << "Wiersz " << vNumerWiersza[i]+1 << " posiada " << licznik << " tych samych cyfr co wiersz " << vNumerWiersza[j]+1 << " a kolumna to " << indeks_kolumny_ktora_nie_pasuje << endl;

                licznik = 0;
            }

        }
    }
}

Proszę o pomoc... Nie wiem gdzie VC ma problem z tym kodem :/

0
#include <string>
0

Dzięki za odpowiedź, Azarien

Poniżej daję kod powyżej definicji funkcji BadajArkusz()


#include "stdafx.h"
#include "ExcelFormat.h"
#include <conio.h>
#include <string>
#include <vector>

using namespace ExcelFormat;
using namespace std;

string to_upper( string napis )
{
    transform( napis.begin(), napis.end(), napis.begin(),::toupper );
    return napis;
}

vector<string> &split(const string &s, char delim)
{
	vector<string> elems;
    stringstream ss(s);
    string item;
    while (getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}

vector<wstring> &split(const wstring &s, wchar_t delim)
{
	vector<wstring> elems;
    wstringstream wss(s);
    wstring item;
    while (getline(wss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1