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

Error LNK2019: ссылка на неразрешенный внешний символ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ operator << для указателя http://www.cyberforum.ru/cpp-beginners/thread879619.html
В общем, есть у меня кастомный класс, указатель на который используется практически всеми классами программы. Для самого класса перегружен <<, однако использовать богомерзкую конструкцию *(pointer)<< желания нет никакого. Вроде как есть возможность вне классов перегружать этот оператор, только вот как это сделать?
C++ массив через функцию для начинашек Задан массив целых чисел. Вывести на экран массив, составленный из элементов, не равных минимальному. http://www.cyberforum.ru/cpp-beginners/thread879617.html
C++ Задача через функцию (составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца)
Задача 2 Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца.
Книги C++
Может ли кто-нибудь посоветовать книги по правильности написания кода. Я не имею виду книги о синтаксисе и функциях языка. Нужна книга о правилах написания интуитивно понятных программ. Вообще о хорошем тоне программирования.
C++ Новый тип данных в объявлении метода класса http://www.cyberforum.ru/cpp-beginners/thread879607.html
Здравствуйте, подскажите, пожалуйста, как сделать, чтобы метод класса мог принимать как аргумент массив, тип данных которого был определен на основе самого класса? Например: class Planet { public: // typedef class Planet PlanetType; void GetForce(int, PlanetType ); }; Когда можно объявить новый тип данных PlanetType, чтобы метод знал его?
C++ Функции. Оформить в виде функций ввод, просмотр и сумму чисел в непарных столбиках масива!г по оплате Дан массив m x n. Оформить в виде функций ввод, просмотр и сумму чисел в непарных столбиках масива!г по оплате. Вывести их фамилию и сумму долга! подробнее

Показать сообщение отдельно
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
26.05.2013, 19:31     Error LNK2019: ссылка на неразрешенный внешний символ
умелые люди помогите исправить ошибку, сегодня надо сдать класс, подправил и упростил код unrar'a после чего нужно было переделать его под класс, что я и сделал, но вылазит след ошибка:
Кликните здесь для просмотра всего текста

1>RAR_Decoder.obj : error LNK2019: ссылка на неразрешенный внешний символ _RAROpenArchiveEx в функции "public: int __thiscall RAR_Decoder::decode(void)" (?decode@RAR_Decoder@@QAEHXZ)
1>RAR_Decoder.obj : error LNK2019: ссылка на неразрешенный внешний символ _RARCloseArchive в функции "public: int __thiscall RAR_Decoder::decode(void)" (?decode@RAR_Decoder@@QAEHXZ)
1>RAR_Decoder.obj : error LNK2019: ссылка на неразрешенный внешний символ _RARReadHeader в функции "public: int __thiscall RAR_Decoder::decode(void)" (?decode@RAR_Decoder@@QAEHXZ)
1>RAR_Decoder.obj : error LNK2019: ссылка на неразрешенный внешний символ _RARProcessFile в функции "public: int __thiscall RAR_Decoder::decode(void)" (?decode@RAR_Decoder@@QAEHXZ)


вот код и проект:

Кликните здесь для просмотра всего текста

мой хидер

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
#pragma once
#pragma comment (lib, "unrar.lib")
 
#include <string.h>
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
 
 
 
 
#define BUFFER          16384
#define EXTRACT         0
#define RAR_OM_EXTRACT  1
#define RAR_EXTRACT     2
 
 
struct RARheader
{
  char         ArcName[260];
  char         FileName[260];
  unsigned int Flags;
  unsigned int PackSize;
  unsigned int UnpSize;
  unsigned int HostOS;
  unsigned int FileCRC;
  unsigned int FileTime;
  unsigned int UnpVer;
  unsigned int Method;
  unsigned int FileAttr;
  char         *buffer;
  unsigned int bufferSize;
  unsigned int CmtSize;
  unsigned int CmtState;
};
 
 
struct RARfileHeaderEx
{
  char         *ArcName;
  wchar_t      *ArcNameW;
  unsigned int  OpenMode;
  unsigned int  OpenResult;
  char         *buffer;
  unsigned int  bufferSize;
  unsigned int  CmtSize;
  unsigned int  CmtState;
  unsigned int  Flags;
  LPARAM        UserData;
  unsigned int  Reserved[28];
};
   
    
 
 
extern "C" 
{
    HANDLE RAROpenArchiveEx(struct RARfileHeaderEx *ArchiveData);
    int    RARCloseArchive(HANDLE rarFile);
     int    RARReadHeader(HANDLE rarFile,struct RARheader *rarHeader);
     int    RARProcessFile(HANDLE rarFile,int Operation,char *DestPath,char *DestName);
}
 
 
 
class RAR_Decoder
{
public:
    RAR_Decoder(char *_inPath, char *_outDir);
    ~RAR_Decoder(void);
    int decode();
private:
    char *inPath, *outDir;
    HANDLE rarFile;
    char buffer[BUFFER];
    RARheader *rarHeader;
    RARfileHeaderEx *fileHeader;
};
cpp

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
#include "RAR_Decoder.h"
 
 
 
RAR_Decoder::RAR_Decoder(char *_inPath, char *_outDir)
{
    strcpy(inPath, _inPath);
    strcpy(outDir, _outDir);
}
 
 
 
RAR_Decoder::~RAR_Decoder(void)
{
    if(buffer)
    delete []buffer;
    delete rarHeader;
    delete fileHeader;
    delete rarFile;
}
 
 
int RAR_Decoder::decode()
{
  memset(&fileHeader,0,sizeof(fileHeader));
  
  fileHeader->ArcName=inPath;
  fileHeader->buffer=buffer;
  fileHeader->bufferSize=sizeof(buffer);
  fileHeader->OpenMode=RAR_OM_EXTRACT;
  fileHeader->UserData=EXTRACT;
  rarFile=RAROpenArchiveEx(fileHeader);
 
  if (fileHeader->OpenResult!=0)
        return -1;
 
  rarHeader->buffer=NULL;
  memset(&fileHeader->Reserved,0,sizeof(fileHeader->Reserved));
 
  while ( !RARReadHeader(rarFile,rarHeader) )
  {
    if ( RARProcessFile(rarFile, RAR_EXTRACT, outDir, NULL) )
        return 1;
  }
  RARCloseArchive(rarFile);
  return 0;
}
main

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "RAR_Decoder.h"
#include <iostream>
int main()
{
    RAR_Decoder unRar("1.rar", "1");
 
    if( unRar.decode() )
        std::cout<<"work";
    else
        std::cout<<"Error";
 
    system("pause");
    return 0;
}


p.s. пока не переделал под класс, все отлично работало, вот код и проект
Кликните здесь для просмотра всего текста


unrar.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
#ifndef _UNRAR_DLL_
#define _UNRAR_DLL_
 
#pragma pack(1)
 
#define EXTRACT         0
#define RAR_OM_EXTRACT  1
#define RAR_EXTRACT     2
 
 
struct RARHeaderData
{
  char         ArcName[260];
  char         FileName[260];
  unsigned int Flags;
  unsigned int PackSize;
  unsigned int UnpSize;
  unsigned int HostOS;
  unsigned int FileCRC;
  unsigned int FileTime;
  unsigned int UnpVer;
  unsigned int Method;
  unsigned int FileAttr;
  char         *CmtBuf;
  unsigned int CmtBufSize;
  unsigned int CmtSize;
  unsigned int CmtState;
};
 
 
struct RAROpenArchiveDataEx
{
  char         *ArcName;
  wchar_t      *ArcNameW;
  unsigned int  OpenMode;
  unsigned int  OpenResult;
  char         *CmtBuf;
  unsigned int  CmtBufSize;
  unsigned int  CmtSize;
  unsigned int  CmtState;
  unsigned int  Flags;
  LPARAM        UserData;
  unsigned int  Reserved[28];
};
 
 
extern "C"
{
    HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
    int    PASCAL RARCloseArchive(HANDLE hArcData);
    int    PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
    int    PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
}
#pragma pack()
 
#endif
main

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
#define STRICT
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
#include "unrar.h"
#include <iostream>
 
void ExtractArchive(char *ArcName,char *OutDir);
 
 
int main()
{
  setlocale(LC_ALL, NULL);
  
  ExtractArchive("1.rar", "1");
  system("pause");
  return(0);
}
 
 
void ExtractArchive(char *ArcName, char *OutDir)
{
  HANDLE hArcData;
  int RHCode,PFCode;
  char CmtBuf[16384];
  struct RARHeaderData HeaderData;
  struct RAROpenArchiveDataEx OpenArchiveData;
 
  memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
  OpenArchiveData.ArcName=ArcName;
  OpenArchiveData.CmtBuf=CmtBuf;
  OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
  OpenArchiveData.OpenMode=RAR_OM_EXTRACT;
  OpenArchiveData.UserData=EXTRACT;
  hArcData=RAROpenArchiveEx(&OpenArchiveData);
 
  if (OpenArchiveData.OpenResult!=0)
  {
    std::cout<<"OPEN EROR\n";
    system("pause");
    return;
  }
  HeaderData.CmtBuf=NULL;
  memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
 
  while ((RHCode=RARReadHeader(hArcData,&HeaderData))==0)
  {
      std::cout<<"\nExtracting "<<HeaderData.FileName;
 
    if ( !RARProcessFile(hArcData, RAR_EXTRACT, OutDir,NULL) )
        std::cout<<" OK \n";
    else
        std::cout<<"EROR\n";
  }
  RARCloseArchive(hArcData);
}
Вложения
Тип файла: rar без класса.rar (7.89 Мб, 1 просмотров)
Тип файла: rar класс.rar (4.21 Мб, 3 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru