LNK 2019 неразрешен външен символ отново

Така че прочетох повечето публикации тук относно тази грешка, но все още не мога да разбера причината за моята грешка. Проектът се състои от 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

Къде бъркам това?


person Ghostli    schedule 03.11.2013    source източник
comment
Каква система за разработка използвате? make, SCONS, Visual Studio...   -  person Ed Heal    schedule 03.11.2013
comment
Трябва ли да приемем, че правилно включвате всички подходящи заглавки на стандартната библиотека в реалния код, който репликира реалния проблем, а не този?   -  person WhozCraig    schedule 03.11.2013
comment
Linker.cpp не се компилира   -  person Luchian Grigore    schedule 03.11.2013
comment
Липсва ви #endif в края на всяко заглавие. Проверете също дали наистина имате съвпадащи скоби във всичките си заглавки.   -  person Alan Stokes    schedule 03.11.2013
comment
VS2012, #endif е включен. Поставих този фрагмент, за да бъде по-четлив. Други включвания са само STL стандартни библиотеки, така че не могат да причинят тази грешка. Силно предполагам, че структурата на включванията е неправилна, но не знам защо.   -  person Ghostli    schedule 03.11.2013
comment
Това не е проблемът, но имена, които съдържат две последователни долни черти (__dbAPI_H_INCLUDED) и имена, които започват с долна черта, последвана от главна буква, са запазени за изпълнението. Не ги използвай.   -  person Pete Becker    schedule 03.11.2013


Отговори (1)


Изглежда, че обектният файл на Linker.cpp не е включен в проекта

person Vlad from Moscow    schedule 03.11.2013