Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
#1

LNK2019: Unresolved external symbol - C++

15.11.2012, 21:28. Просмотров 1136. Ответов 12
Метки нет (Все метки)

Приветствую!
Была поставлена задача написать некоторую программу. Пример был найден, но скомпилировать на VS2012 мне его не удалось.
Выпадают вот такие вот ошибки:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall cpl::Vector::Vector(int)" (??0Vector@cpl@@QAE@H@Z) referenced in function "void __cdecl `dynamic initializer for 'txyz''(void)" (??__Etxyz@@YAXXZ) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 2 error LNK2019: unresolved external symbol "public: __thiscall cpl::Vector::Vector(class cpl::Vector const &)" (??0Vector@cpl@@QAE@ABV01@@Z) referenced in function "void __cdecl RK4Step(class cpl::Vector &,double)" (?RK4Step@@YAXAAVVector@cpl@@N@Z) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 3 error LNK2019: unresolved external symbol "public: class cpl::Vector & __thiscall cpl::Vector::operator=(class cpl::Vector const &)" (??4Vector@cpl@@QAEAAV01@ABV01@@Z) referenced in function "void __cdecl findNextCrossing(void)" (?findNextCrossing@@YAXXZ) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 4 error LNK2019: unresolved external symbol "public: class cpl::Vector & __thiscall cpl::Vector::operator+=(class cpl::Vector const &)" (??YVector@cpl@@QAEAAV01@ABV01@@Z) referenced in function "void __cdecl RK4Step(class cpl::Vector &,double)" (?RK4Step@@YAXAAVVector@cpl@@N@Z) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 5 error LNK2019: unresolved external symbol "class cpl::Vector __cdecl cpl::operator*(double,class cpl::Vector const &)" (??Dcpl@@YA?AVVector@0@NABV10@@Z) referenced in function "void __cdecl RK4Step(class cpl::Vector &,double)" (?RK4Step@@YAXAAVVector@cpl@@N@Z) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 6 error LNK2019: unresolved external symbol "class cpl::Vector __cdecl cpl::operator/(class cpl::Vector const &,double)" (??Kcpl@@YA?AVVector@0@ABV10@N@Z) referenced in function "void __cdecl RK4Step(class cpl::Vector &,double)" (?RK4Step@@YAXAAVVector@cpl@@N@Z) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 7 error LNK2019: unresolved external symbol "class cpl::Vector __cdecl cpl::operator+(class cpl::Vector const &,class cpl::Vector const &)" (??Hcpl@@YA?AVVector@0@ABV10@0@Z) referenced in function "void __cdecl RK4Step(class cpl::Vector &,double)" (?RK4Step@@YAXAAVVector@cpl@@N@Z) C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Test1\main.obj Test1
Error 8 error LNK1120: 7 unresolved externals C:\Users\Comp\documents\visual studio 2012\Projects\Test1\Debug\Test1.exe Test1
Сама программа выглядит следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <iostream>
using namespace std;
 
#include "vector.h"
using namespace cpl;
 
double sigma = 10;                 //  Lorenz model constants in textbook
double b = 8.0 / 3.0;
double r = 25;
 
Vector f(Vector txyz) {            //  The Lorenz equations
    double t = txyz[0];
    double x = txyz[1];
    double y = txyz[2];
    double z = txyz[3];
    Vector f(4);
    f[0] = 1;
    f[1] = - sigma * x + sigma * y;
    f[2] = - x * z + r * x - y;
    f[3] = x * y - b * z;
    return f;
}
 
void RK4Step(                      //  4th order Runge-Kutta
    Vector& y,                     //  extended solution vector
    double h)                      //  step size
{
    Vector k1 = h * f(y);
    Vector k2 = h * f(y + 0.5 * k1);
    Vector k3 = h * f(y + 0.5 * k2);
    Vector k4 = h * f(y + k3);
    y += (k1 + 2 * k2 + 2 * k3 + k4) / 6.0;
}
 
Vector txyz(4);                    //  global variable to hold t,x,y,z
 
void initialize() {                //  initial conditions in textbook
    txyz[0] = 0.0;
    txyz[1] = 0.0;
    txyz[2] = 1.0;
    txyz[3] = 0.0;
}
 
double dt = 0.001;                 //  time step for integration
 
void findNextCrossing() {          //  find next Poincare section point
 
    Vector txyzOld = txyz;         //  save the old point
 
    while (true) {
        RK4Step(txyz, dt);         //  take a step
 
        // check whether y changes sign, i.e., crosses y = 0
        if (txyz[2] * txyzOld[2] < 0)
            break;                 // stop stepping
        else
            txyzOld = txyz;
    }
 
    //  use linear interpolation like in projectile.cpp to find intersection
    double r = txyzOld[2] / txyz[2];
    for (int i = 0; i < 4; i++)
        txyz[i] = (txyzOld[i] + r * txyz[i]) / (r + 1);
}
 
int main(int argc, char *argv[]) {
   
    cout << " Trajectory and Poincare Section for the Lorenz Attractor\n"
         << " using 4th order Runge-Kutta with time step dt = " << dt << "\n"
         << " sigma = " << sigma << ", b = " << b << ", r = " << r << endl;
 
    initialize();
    cout << " initial conditions: x = " << txyz[1] << "\t"
         << ", y = "  << txyz[2] << "\t" << ", z = "  << txyz[3] << endl;
 
    //  transient trajectory
    double t = 50;
    string fileName = "transient.data";
    cout << " Integrating to time t = " << t << "\n"
         << " trajectory in file " << fileName << endl;
    ofstream dataFile(fileName.c_str());
    dataFile << txyz[0] << "\t" << txyz[1] << "\t" 
             << txyz[2] << "\t" << txyz[3] << "\n";
    int step = 0;
    int skip = 5;
    while (txyz[0] < t) {
        RK4Step(txyz, dt);
        if (++step % skip != 0)    // record every skip steps
           continue;
        dataFile << txyz[0] << "\t" << txyz[1] << "\t" 
                 << txyz[2] << "\t" << txyz[3] << "\n";
    }
    dataFile.close();
    
    //  Poincare section
    fileName = "section.data";
    int points = 1000;
    cout << " Finding " << points << " Poincare section points at y = 0\n"
         << " section data in file " << fileName << endl;
    dataFile.open(fileName.c_str());
    for (int point = 0; point < points; point++) {
        findNextCrossing();
        dataFile << txyz[0] << "\t" << txyz[1] << "\t" 
                 << txyz[2] << "\t" << txyz[3] << "\n";
    }
}
Где файл: vector.h выглядит вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef CPL_VECTOR_HPP
#define CPL_VECTOR_HPP
 
#include <complex>
#include <iostream>
 
namespace cpl {
 
class Vector {
  public:
 
    Vector(int dim = 1);
 
    Vector(const Vector& dv);
 
    ~Vector() { delete [] v; }
 
    int dimension() const { return dim; }
 
    void resize(const int);
 
    const double operator[](const int i) const { return v[i]; }
 
    double& operator[](const int i) { return v[i]; }
 
    Vector& operator = (const Vector& dv);
 
    Vector& operator += (const Vector& dv);
 
    Vector& operator -= (const Vector& dv);
 
    Vector& operator *= (double d);
 
    Vector& operator /= (double d);
 
    double abs();
 
    double norm();
 
    double dot(const Vector& dv);
 
    friend std::ostream& operator<<(std::ostream& os, const Vector& dv);
 
  private:
    int dim;
    double *v;
};
 
inline Vector operator + (const Vector& dv) {
    return dv;
}
 
extern Vector operator - (const Vector& dv);
 
extern Vector operator * (const Vector& dv, double d);
 
extern Vector operator * (double d, const Vector& dv);
 
extern Vector operator / (const Vector& dv, double d);
 
extern Vector operator + (const Vector& v1, const Vector& v2);
 
extern Vector operator - (const Vector& v1, const Vector& v2);
 
class ComplexVector {
  public:
    ComplexVector(int dim = 1);
    ComplexVector(const ComplexVector& cv);
    ~ComplexVector() { delete [] v; }
 
    int dimension() const { return dim; }
    const std::complex<double> operator[](const int i) const { return v[i]; }
    std::complex<double>& operator[](const int i) { return v[i]; }
    ComplexVector& operator = (const ComplexVector& cv);
 
  private:
    int dim;
    std::complex<double> *v;
};
 
class FFT {
  public:
    FFT() { N = 0; f = 0; inverse = false; }
    void transform(ComplexVector& data);
    void inverseTransform(ComplexVector& data);
    Vector power(ComplexVector& data);
 
  private:
    int N;
    ComplexVector *f;
    bool inverse;
 
    void bitReverse();
    void DanielsonLanczos(int n);
};
 
extern void solveTridiagonal(
        ComplexVector& a, ComplexVector& b, ComplexVector& c, 
        ComplexVector& r, ComplexVector& u);
 
extern void solveTridiagonalCyclic(
        ComplexVector& a, ComplexVector& b, ComplexVector& c, 
        std::complex<double> alpha, std::complex<double> beta,
        ComplexVector& r, ComplexVector& x);
 
}  /* end namespace cpl */
 
#endif  /* CPL_VECTOR_HPP */
Буду ооочень благодарен, если поможете разобраться!
Если есть вопросы по коду или самой задаче, то пишите. Все расскажу и покажу.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос LNK2019: Unresolved external symbol (C++):

error LNK2019: unresolved external symbol - C++
Пример из книги Щупака Win32 API. Эффективная разработка приложений ...

Error LNK2019: unresolved external symbol - C++
Доброго дня, программисты. Пишу синтезатор на Microsoft Visual C++ 2010 Express. Столкнулся с такой проблемой: при компиляции vst2...

error LNK2019: unresolved external symbol - C++
Всем привет! Я новичок в С++, и вот проблема: пишу код для своей функции MySwap, студия 2010 выдает ошибку: error LNK2019: unresolved...

error LNK2019: unresolved external symbol - C++
Добрый вечер. Недавно начала изучение языка С++ и столкнулась с такими ошибками: Error 1 error LNK2019: unresolved external symbol...

Error LNK2019: unresolved external symbol - C++
Всем привет. Имеется конструктор и деструктор public: MyClass(const char *url);//конструктор. параметр -адрес из командной...

Error LNK2019: unresolved external symbol - C++
static int _handle_lockacct_command(t_connection * c, char const *text) { t_connection * user; t_account * account; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
15.11.2012, 23:29 #2
Цитата Сообщение от MegaC Посмотреть сообщение
но скомпилировать на VS2012 мне его не удалось.
Похоже, скомпилировать тебе его всё-таки удалось. Это с линковкой проблемы.

Добавлено через 9 минут
Например, нет реализации конструктора Vector(const Vector& dv); думаю и куча других методов объявлена и не реализована.
0
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:39  [ТС] #3
В таком случае, если кого-то не затруднит, напишите, пожалуйста, как можно заменить вот это:
Vector txyz(4);
Т.е существует ли стандартный класс, который может содержать 4 переменные и для него определены функции: покомпонентного сложения?
Или может просто воспользоваться обычным массивом?

Буду очень благодарен каждому совету!!!
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 21:47 #4
Цитата Сообщение от MegaC Посмотреть сообщение
Буду очень благодарен каждому совету!!!
У Вас вообще есть реализация объявленных функций?
0
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:48  [ТС] #5
Нет, готовых найти не удалось.
2 дня искал =(
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 21:49 #6
Цитата Сообщение от MegaC Посмотреть сообщение
Нет, готовых найти не удалось.
2 дня искал =(
Нормальнообъявили кучу функций, реализаций нет и хотите чтобы все работало? Жесть.....
0
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:52  [ТС] #7
Как бы из первого сообщения темы уже понятно, что реализации конструкторов и других функций я так и не нашел.
Сейчас я пытаюсь найти аналог класса vector.
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 21:54 #8
Вообще, что делает вектор?
0
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:57  [ТС] #9
Как я понял он создает обычный массив из 4 компонент.
+ для него описаны методы.
На перспективу мне нужно, чтобы вектор состоял из n-элементов. Поэтому обычным массив я тут не отделаюсь.
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 21:59 #10
Цитата Сообщение от MegaC Посмотреть сообщение
На перспективу мне нужно, чтобы вектор состоял из n-элементов. Поэтому обычным массив я тут не отделаюсь.
Тогда используйте класс vector из STL
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
17.11.2012, 22:25 #11
Цитата Сообщение от Croessmah Посмотреть сообщение
Тогда используйте класс vector из STL
Ну не прикалывайтесь над человеком, Он очень хочет самостоятельно научиться писать классы, оперирующие неким динамическим массивом из n элементов, чтобы на его примере освоить понятия "конструктор", "деструктор", "конструктор копирования", "оператор присвоения", "утечка памяти" и "борьба с утечками памяти" и.т.д.
Также, возможно он хочет на этом примере познакомится вообще с классами, их методами и перегрузкой операторов, если это его первая программа с классом.

А теперь скажи, даст ли ему эти знания твой стандартный вектор?
0
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 23:13  [ТС] #12
Т.е рациональнее использовать стандартный вектор и отдельно дописывать функции, а не создать собственный, в котором ты точно знаешь, что внутри?
Кстати, есть ли в стандартном векторе методы сложения, умножения, деления векторов?
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 23:13 #13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Также, возможно он хочет на этом примере познакомится вообще с классами, их методами и перегрузкой операторов, если это его первая программа с классом.
А теперь скажи, даст ли ему эти знания твой стандартный вектор?
Из выше сказанного автором темы ясно, что он нашел данный код где-то, посему вопрос о каком
Он очень хочет самостоятельно научиться писать классы, оперирующие неким динамическим массивом из n элементов, чтобы на его примере освоить понятия "конструктор", "деструктор", "конструктор копирования", "оператор присвоения", "утечка памяти" и "борьба с утечками памяти" и.т.д.
идет речь?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2012, 23:13
Привет! Вот еще темы с ответами:

Error LNK2019: unresolved external symbol - C++
помогите пожалуйста исправить ошибку при компиляции,никогда прежде такой ошибки не встречала,не знаю как исправить и соответственно не могу...

vector, error LNK2019: unresolved external symbol - C++
Всем доброго времени суток. Хочу сделать список игроков, находящихся на карте (список меняется по мере игры в зависимости от появления...

Ошибка: error LNK2019: unresolved external symbol - C++
В общем делаю курсач, есть фунция ввода списка, но тут такая проблема: у меня не компилируется, то что я написал(точнее LINK не проходит) с...

error LNK2019: unresolved external symbol __imp__ - C++
В чем проблема можете подсказать.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.11.2012, 23:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru