[SOLVED] Can't add custom class!
-
Hi all,
I cannot find why I get this error:@hid_pnp.obj:-1: error: LNK2001: unresolved external symbol "public: bool __thiscall CHexManager::LoadHexFile(void)" (?LoadHexFile@CHexManager@@QAE_NXZ)@
Here is my CHexManager class header
@#ifndef HEX_H
#define HEX_H#pragma once
#include "stdio.h"
#include <QObject>typedef struct
{
unsigned char RecDataLen;
unsigned int Address;
unsigned int MaxAddress;
unsigned int MinAddress;
unsigned char RecType;
unsigned char* Data;
unsigned char CheckSum;
unsigned int ExtSegAddress;
unsigned int ExtLinAddress;
}T_HEX_RECORD;// Hex Manager class
class CHexManager
{public:
unsigned int HexTotalLines;
unsigned int HexCurrLineNo;
bool LoadHexFile(void);
--
//Constructor
CHexManager()
{
HexFilePtr = NULL;
}
//Destructor
~CHexManager()
{
// If hex file is open close it.
if(HexFilePtr)
{
fclose(HexFilePtr);
}
}private:
QString HexFilePath;
FILE *HexFilePtr;};
#endif // HEX_H
@and source
@
#include "hex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = FILE;
#endif// Virtual Flash.
#define KB (1024)
#define MB (KB*KB)// 5 MB flash
static unsigned char VirtualFlash[5*MB];#define BOOT_SECTOR_BEGIN 0x7FC000
#define DATA_RECORD 0
#define END_OF_FILE_RECORD 1
#define EXT_SEG_ADRS_RECORD 2
#define EXT_LIN_ADRS_RECORD 4/****************************************************************************
-
Loads hex file
-
\param
-
\param
-
\param
-
\return true if hex file loads successfully
*****************************************************************************/
bool CHexManager::LoadHexFile(void)
{
char HexRec[255];HexFilePath = fileDialog.GetPathName();
// Open file
HexFilePtr = fopen(HexFilePath, "r");if(HexFilePtr == NULL)
{
// Failed to open hex file.
return false;
}
else
{HexTotalLines = 0; while(!feof(HexFilePtr)) { fgets(HexRec, sizeof(HexRec), HexFilePtr); HexTotalLines++; }
}
return true;
}
@
In my MainWindow.h file I have declared in the public section:
@ CHexManager HexManager; //load Hex manager class@and in my MainWindow.c file.. if I try to run @HexManager.LoadHexFile();@
I get the error.
What am I doing wrong??
-
-
Have you added the hex.cpp file to your project?
-
Hi,
In the project tree doesn't mean it gets compiled. Do you list in the sources in your pro file ?
-
Can you show your pro file ?
-
@#-------------------------------------------------
Project created by QtCreator 2012-09-04T13:47:46
#-------------------------------------------------
QT += gui declarative
QT += core gui
#DEFINES +=QT_DISABLE_DEPRECATED_BEFORE=0x040800 #0x050100 to disable functions deprecated in Qt 5.1 and earlier
greaterThan(QT_MAJOR_VERSION, 4): QT += printsupportTARGET = MyApp
TEMPLATE = appSOURCES += main.cpp
mainwindow.cpp
hid_pnp.cpp
qcustomplot.cpp
windows/hid.c
hex.cppHEADERS += mainwindow.h
hid_pnp.h
qcustomplot.h
hidapi.h
hex.hFORMS += mainwindow.ui
#-------------------------------------------------
Add the Signal11's hidapi library that was
created
#-------------------------------------------------
macx: LIBS += -L../HIDAPI/mac -lHIDAPI
#win32: LIBS += -L../HIDAPI/windows -lHIDAPI
unix: !macx: LIBS += -L../HIDAPI/linux -lHIDAPI#-------------------------------------------------
Make sure to add the required libraries or
frameoworks for the hidapi to work depending on
what OS is being used
#-------------------------------------------------
macx: LIBS += -framework CoreFoundation -framework IOkit
win32: LIBS += -lSetupAPI
unix: !macx: LIBS += -lusb-1.0#-------------------------------------------------
Make sure output directory for object file and
executable is in the correct subdirectory
#-------------------------------------------------
macx {
DESTDIR = mac
OBJECTS_DIR = mac
MOC_DIR = mac
UI_DIR = mac
RCC_DIR = mac
}
unix: !macx {
DESTDIR = linux
OBJECTS_DIR = linux
MOC_DIR = linux
UI_DIR = linux
RCC_DIR = linux
}
win32 {
DESTDIR = windows
OBJECTS_DIR = windows
MOC_DIR = windows
UI_DIR = windows
RCC_DIR = windows
}@
-
Did you delete the build directory and do a full rebuild ?
-
Are all your files in the same folder ?
-
Are you also calling this function in hid_pnp ?
-
Then let's go step by step, comment all call to that function and build again, once it does, re-add them one by one.
-
You're welcome !
Since you have it working now, don't forget to update the thread title prepending [solved] so other forum users may know a solution has been found :)