Така че прочетох повечето публикации тук относно тази грешка, но все още не мога да разбера причината за моята грешка. Проектът се състои от 2 заглавни файла заедно с cpp реализации + основен cpp файл.
DbApi.h съдържа дефиниции за функции, реализирани в DbApi.cpp. Linker.h съдържа дефиниции за функции, извикани от Source.cpp, докато Linker.cpp съдържа техните реализации, които извикват функции от DbApi.h
Linker.h
#ifndef LINKER_DEFINED
#define LINKER_DEFINED
#include "DbAPI.h"
enum Short_Result_Code{...};
Short_Result_Code createNewCategory(string name, list <int> &Parents);
#endif
Linker.cpp
#include "Linker.h"
Short_Result_Code createNewCategory(string name, list <int> &Parents)
{
int RC = db::addCategory(name, Parents);
if(RC==0)
return OK;
else
return ERROR;
}
DbApi.h
#ifndef __dbAPI_H_INCLUDED
#define __dbAPI_H_INCLUDED
namespace db
{
int addCategory(string name, list <int> parents);
}
#endif
DbApi.cpp
#include "DbAPI.h"
namespace db
{
int addCategory(string name, list <int> parents)
{
// implementation
};
}
main.cpp
#include "Linker.h"
int main
{
list<int> A;
A.push_back(1);
A.push_back(2);
string d = "ABC";
createNewCategory(d, A);
}
грешка:
грешка LNK2019: неразрешен външен символ "enum Short_Result_Code __cdecl createNewCategory(class std::basic_string,class std::allocator >,class std::list > &)" (?createNewCategory@@YA?AW4Short_Result_Code@@V?$basic_string@DU ?$char_traits@D@std@@V?$allocator@D@2@@std@@AAV?$list@HV?$allocator@H@std@@@3@@Z), посочен във функция _main F:\ AeroFS\Work\ETI\PDFAccess\PDFAccess\Source.obj PDFAccess
Къде бъркам това?
#endif
в края на всяко заглавие. Проверете също дали наистина имате съвпадащи скоби във всичките си заглавки. - person Alan Stokes   schedule 03.11.2013__dbAPI_H_INCLUDED
) и имена, които започват с долна черта, последвана от главна буква, са запазени за изпълнението. Не ги използвай. - person Pete Becker   schedule 03.11.2013