LNK2019 错误 - 未找到外部符号。尝试了几种解决方案
LNK2019 error- external simbol not found. Tried several solutions
我已经针对这个问题进行了大量搜索,但是 none 的结果帮助我解决了这个问题。问题是,我正在使用 M visual studio,我不确定我是否遗漏了什么。
编译我的代码时,使用一些.h 文件进行调制,出现LNK2019 错误。这是我已有的代码:
ImageExtractor.cpp
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#include <string>
#include <sstream>
#include "../../Headers/FunctionDefinitions.h"
#include "../../Headers/XRIT2PICHandler.h"
#include "../../Headers/DirectoryFunctions.h"
using namespace std;
int main()
{
XRIT2PICHANDLER X2PHandler1;
XRIT2PICHANDLER X2PHandler2("Hola");
XRIT2PICHANDLER X2PHandler3("C:\tools\xrit");
XRIT2PICHANDLER X2PHandler4("C:\tools");
cout<<X2PHandler1.DirStatus<<endl;
cout<<X2PHandler2.DirStatus<<endl;
cout<<X2PHandler3.DirStatus<<endl;
cout<<X2PHandler4.DirStatus<<endl;
return 0;
}
以及提到的 .h 文件:
FunctionDefinitions.h
int CheckFileDirectory(const char*,const char*);
DirectoryFunctions.h
int CheckFileDirectory(const char* FilePath, const char* FileName)
{
DIR* pDirectory;
struct dirent * Entry;
pDirectory = opendir(FilePath);
while (pDirectory) {
errno = 0;
if ((Entry=readdir(pDirectory)) != NULL)
{
if (strcmp(Entry->d_name, FileName) == 0)
{
closedir(pDirectory);
return FOUND;
}
}
else
{
if (errno == 0)
{
closedir(pDirectory);
return NOT_FOUND;
}
closedir(pDirectory);
return READ_ERROR;
}
}
return OPEN_ERROR;
}
XRIT2PICHandler.h
#include <dirent.h>
#include <errno.h>
const char* DEFAULTPATH="C:\Tools\xrit";
const char* DEFAULTCOMMAND="\xrit2pic_cmd -nogui";
const char* PROGRAMNAME="xrit2pic_cmd.exe";
const int OPEN_ERROR=-10;
const int NOT_FOUND=-11;
const int READ_ERROR=-12;
const int FOUND=10;
class XRIT2PICHANDLER
{
public:
//Atributos
std::string XRIT2PICPath;
std::string Command;
//DIR * pDirectory;
//struct dirent *Entry;
int DirStatus;
//Constructores
//Por defecto se usa la instalación en C:\Tools\xrit
XRIT2PICHANDLER();
//Constructor parametrizado
XRIT2PICHANDLER(const char*);
//Destructor
~XRIT2PICHANDLER();
//Métodos
};
//Implementacion de los constructores
//Por defecto
XRIT2PICHANDLER::XRIT2PICHANDLER()
{
DirStatus=CheckFileDirectory(DEFAULTPATH,PROGRAMNAME);
if(DirStatus==FOUND)
{
XRIT2PICPath=std::string(DEFAULTPATH);
XRIT2PICPath=std::string(DEFAULTCOMMAND);
}
}
//constructor parametrizado
XRIT2PICHANDLER::XRIT2PICHANDLER(const char* Path)
{
DirStatus=CheckFileDirectory(Path,PROGRAMNAME);
if(DirStatus==FOUND)
{
XRIT2PICPath=std::string(DEFAULTPATH);
XRIT2PICPath=std::string(DEFAULTCOMMAND);
}
}
顺便提一下,我简化了程序,但错误不断出现。我已经完成了几个与此类似的结构,所以我可能遗漏了一些东西,但我确实搜索了很多。如果有人指出我的问题,我会很高兴,我已经经历了很多。
Error code:
Compilación iniciada a las 20/10/2015 13:39:33.
1>InitializeBuildStatus:
1> Aplicando tarea Touch a "Debug\ImageExtractor.unsuccessfulbuild".
1>ClCompile:
1> ImageExtractor.cpp
1>ManifestResourceCompile:
1> Todas las salidas están actualizadas.
1>ImageExtractor.obj : error LNK2019: símbolo externo "public: __thiscall XRIT2PICHANDLER::~XRIT2PICHANDLER(void)" (??1XRIT2PICHANDLER@@QAE@XZ) sin resolver al que se hace referencia en la función _main
1>C:\Users\sesel\Google Drive\PFC Telecomunicaciones\C++\ImageExtractor\Debug\ImageExtractor.exe : fatal error LNK1120: 1 externos sin resolver
1>
1>ERROR al compilar.
1>
1>Tiempo transcurrido 00:00:00.66
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
顺便说一下,我确保 .h 文件位于正确的文件夹中,对于西班牙语的评论,我们深表歉意。
提前致谢。
您可能需要实现一个析构函数。
尝试用 ~XRIT2PICHANDLER() {};
替换 ~XRIT2PICHANDLER();
我已经针对这个问题进行了大量搜索,但是 none 的结果帮助我解决了这个问题。问题是,我正在使用 M visual studio,我不确定我是否遗漏了什么。
编译我的代码时,使用一些.h 文件进行调制,出现LNK2019 错误。这是我已有的代码:
ImageExtractor.cpp
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#include <string>
#include <sstream>
#include "../../Headers/FunctionDefinitions.h"
#include "../../Headers/XRIT2PICHandler.h"
#include "../../Headers/DirectoryFunctions.h"
using namespace std;
int main()
{
XRIT2PICHANDLER X2PHandler1;
XRIT2PICHANDLER X2PHandler2("Hola");
XRIT2PICHANDLER X2PHandler3("C:\tools\xrit");
XRIT2PICHANDLER X2PHandler4("C:\tools");
cout<<X2PHandler1.DirStatus<<endl;
cout<<X2PHandler2.DirStatus<<endl;
cout<<X2PHandler3.DirStatus<<endl;
cout<<X2PHandler4.DirStatus<<endl;
return 0;
}
以及提到的 .h 文件:
FunctionDefinitions.h
int CheckFileDirectory(const char*,const char*);
DirectoryFunctions.h
int CheckFileDirectory(const char* FilePath, const char* FileName)
{
DIR* pDirectory;
struct dirent * Entry;
pDirectory = opendir(FilePath);
while (pDirectory) {
errno = 0;
if ((Entry=readdir(pDirectory)) != NULL)
{
if (strcmp(Entry->d_name, FileName) == 0)
{
closedir(pDirectory);
return FOUND;
}
}
else
{
if (errno == 0)
{
closedir(pDirectory);
return NOT_FOUND;
}
closedir(pDirectory);
return READ_ERROR;
}
}
return OPEN_ERROR;
}
XRIT2PICHandler.h
#include <dirent.h>
#include <errno.h>
const char* DEFAULTPATH="C:\Tools\xrit";
const char* DEFAULTCOMMAND="\xrit2pic_cmd -nogui";
const char* PROGRAMNAME="xrit2pic_cmd.exe";
const int OPEN_ERROR=-10;
const int NOT_FOUND=-11;
const int READ_ERROR=-12;
const int FOUND=10;
class XRIT2PICHANDLER
{
public:
//Atributos
std::string XRIT2PICPath;
std::string Command;
//DIR * pDirectory;
//struct dirent *Entry;
int DirStatus;
//Constructores
//Por defecto se usa la instalación en C:\Tools\xrit
XRIT2PICHANDLER();
//Constructor parametrizado
XRIT2PICHANDLER(const char*);
//Destructor
~XRIT2PICHANDLER();
//Métodos
};
//Implementacion de los constructores
//Por defecto
XRIT2PICHANDLER::XRIT2PICHANDLER()
{
DirStatus=CheckFileDirectory(DEFAULTPATH,PROGRAMNAME);
if(DirStatus==FOUND)
{
XRIT2PICPath=std::string(DEFAULTPATH);
XRIT2PICPath=std::string(DEFAULTCOMMAND);
}
}
//constructor parametrizado
XRIT2PICHANDLER::XRIT2PICHANDLER(const char* Path)
{
DirStatus=CheckFileDirectory(Path,PROGRAMNAME);
if(DirStatus==FOUND)
{
XRIT2PICPath=std::string(DEFAULTPATH);
XRIT2PICPath=std::string(DEFAULTCOMMAND);
}
}
顺便提一下,我简化了程序,但错误不断出现。我已经完成了几个与此类似的结构,所以我可能遗漏了一些东西,但我确实搜索了很多。如果有人指出我的问题,我会很高兴,我已经经历了很多。
Error code:
Compilación iniciada a las 20/10/2015 13:39:33.
1>InitializeBuildStatus:
1> Aplicando tarea Touch a "Debug\ImageExtractor.unsuccessfulbuild".
1>ClCompile:
1> ImageExtractor.cpp
1>ManifestResourceCompile:
1> Todas las salidas están actualizadas.
1>ImageExtractor.obj : error LNK2019: símbolo externo "public: __thiscall XRIT2PICHANDLER::~XRIT2PICHANDLER(void)" (??1XRIT2PICHANDLER@@QAE@XZ) sin resolver al que se hace referencia en la función _main
1>C:\Users\sesel\Google Drive\PFC Telecomunicaciones\C++\ImageExtractor\Debug\ImageExtractor.exe : fatal error LNK1120: 1 externos sin resolver
1>
1>ERROR al compilar.
1>
1>Tiempo transcurrido 00:00:00.66
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
顺便说一下,我确保 .h 文件位于正确的文件夹中,对于西班牙语的评论,我们深表歉意。
提前致谢。
您可能需要实现一个析构函数。
尝试用 ~XRIT2PICHANDLER() {};
~XRIT2PICHANDLER();