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

Odpowiedz Nowy wątek
2014-12-14 16:30
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)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@XZ) referenced in function "void __cdecl BadajArkusz(class YExcel::BasicExcel &,int)" ([email protected]@[email protected]@@[email protected])

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 :/

edytowany 2x, ostatnio: Mc_Hammer, 2014-12-14 16:33

Pozostało 580 znaków

2014-12-14 19:38
0
#include <string>

Pozostało 580 znaków

2014-12-14 19:47
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;
}
edytowany 2x, ostatnio: Mc_Hammer, 2014-12-14 19:48

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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