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

LNK2019: Unresolved external symbol - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
15.11.2012, 21:28     LNK2019: Unresolved external symbol #1
Приветствую!
Была поставлена задача написать некоторую программу. Пример был найден, но скомпилировать на 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 */
Буду ооочень благодарен, если поможете разобраться!
Если есть вопросы по коду или самой задаче, то пишите. Все расскажу и покажу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 21:28     LNK2019: Unresolved external symbol
Посмотрите здесь:

C++ vector, error LNK2019: unresolved external symbol
C++ error LNK2019: unresolved external symbol
error LNK2019: unresolved external symbol C++
C++ error LNK2019: unresolved external symbol __imp__
C++ error LNK2019: unresolved external symbol
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.11.2012, 23:29     LNK2019: Unresolved external symbol #2
Цитата Сообщение от MegaC Посмотреть сообщение
но скомпилировать на VS2012 мне его не удалось.
Похоже, скомпилировать тебе его всё-таки удалось. Это с линковкой проблемы.

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

Буду очень благодарен каждому совету!!!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 21:47     LNK2019: Unresolved external symbol #4
Цитата Сообщение от MegaC Посмотреть сообщение
Буду очень благодарен каждому совету!!!
У Вас вообще есть реализация объявленных функций?
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:48  [ТС]     LNK2019: Unresolved external symbol #5
Нет, готовых найти не удалось.
2 дня искал =(
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 21:49     LNK2019: Unresolved external symbol #6
Цитата Сообщение от MegaC Посмотреть сообщение
Нет, готовых найти не удалось.
2 дня искал =(
Нормальнообъявили кучу функций, реализаций нет и хотите чтобы все работало? Жесть.....
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:52  [ТС]     LNK2019: Unresolved external symbol #7
Как бы из первого сообщения темы уже понятно, что реализации конструкторов и других функций я так и не нашел.
Сейчас я пытаюсь найти аналог класса vector.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 21:54     LNK2019: Unresolved external symbol #8
Вообще, что делает вектор?
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 21:57  [ТС]     LNK2019: Unresolved external symbol #9
Как я понял он создает обычный массив из 4 компонент.
+ для него описаны методы.
На перспективу мне нужно, чтобы вектор состоял из n-элементов. Поэтому обычным массив я тут не отделаюсь.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 21:59     LNK2019: Unresolved external symbol #10
Цитата Сообщение от MegaC Посмотреть сообщение
На перспективу мне нужно, чтобы вектор состоял из n-элементов. Поэтому обычным массив я тут не отделаюсь.
Тогда используйте класс vector из STL
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.11.2012, 22:25     LNK2019: Unresolved external symbol #11
Цитата Сообщение от Croessmah Посмотреть сообщение
Тогда используйте класс vector из STL
Ну не прикалывайтесь над человеком, Он очень хочет самостоятельно научиться писать классы, оперирующие неким динамическим массивом из n элементов, чтобы на его примере освоить понятия "конструктор", "деструктор", "конструктор копирования", "оператор присвоения", "утечка памяти" и "борьба с утечками памяти" и.т.д.
Также, возможно он хочет на этом примере познакомится вообще с классами, их методами и перегрузкой операторов, если это его первая программа с классом.

А теперь скажи, даст ли ему эти знания твой стандартный вектор?
MegaC
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 27
17.11.2012, 23:13  [ТС]     LNK2019: Unresolved external symbol #12
Т.е рациональнее использовать стандартный вектор и отдельно дописывать функции, а не создать собственный, в котором ты точно знаешь, что внутри?
Кстати, есть ли в стандартном векторе методы сложения, умножения, деления векторов?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2012, 23:13     LNK2019: Unresolved external symbol
Еще ссылки по теме:

Ошибка: error LNK2019: unresolved external symbol C++
Error LNK2019: unresolved external symbol C++
C++ Error LNK2019: unresolved external symbol

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
17.11.2012, 23:13     LNK2019: Unresolved external symbol #13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Также, возможно он хочет на этом примере познакомится вообще с классами, их методами и перегрузкой операторов, если это его первая программа с классом.
А теперь скажи, даст ли ему эти знания твой стандартный вектор?
Из выше сказанного автором темы ясно, что он нашел данный код где-то, посему вопрос о каком
Он очень хочет самостоятельно научиться писать классы, оперирующие неким динамическим массивом из n элементов, чтобы на его примере освоить понятия "конструктор", "деструктор", "конструктор копирования", "оператор присвоения", "утечка памяти" и "борьба с утечками памяти" и.т.д.
идет речь?
Yandex
Объявления
17.11.2012, 23:13     LNK2019: Unresolved external symbol
Ответ Создать тему
Опции темы

Текущее время: 04:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru