Пытаясь решить ошибку LNK2019, я сделал небольшой код, чтобы повторить эту ошибку за пределами моего проекта. Ошибка не появляется в том же месте, но шов похож. Я использую Visual Studio 2013 и не пробовал использовать другую IDE.
моя программа:
main.cpp:
#include "functions.hpp"
int main(int argc, char *argv[]){
core::function1();
return 0;
}
functions.hpp:
#ifndef _functions_hpp
#define _functions_hpp
#include "core.hpp"
namespace core{
void function1();
}
#endif
core.hpp:
#ifndef _core_hpp
#define _core_hpp
#include <string>
namespace core{
//some defines
}
#endif _core_hpp
functions.cpp:
#include "functions.hpp"
#include "Input_Output.hpp"
namespace core{
void functions(){
type_writer writer;
writer.save();
}
}
Input_Output.hpp:
#ifndef _INPUT_OUTPUT_HPP
#define _INPUT_OUTPUT_HPP
namespace core{
class type_writer{
public:
void save();
};
}
#endif
Input_Output.cpp:
#include "Input_Output.hpp"
namespace core{
void type_writer::save(){
}
}
ошибка журнала:
Comand Line Compile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _LIB /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\" /Fd"Debug\vc120.pdb" /Gd /TP /analyze- /errorReport:prompt main.cpp
Link :
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _LIB /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\" /Fd"Debug\vc120.pdb" /Gd /TP /analyze- /errorReport:prompt main.cpp
error :
1>main.obj : error LNK2019: unresolved external symbol "void __cdecl core::function1(void)" (?function1@core@@YAXXZ) referenced in function _main
1>E:\Nicolas\frame_external_error\Debug\frame_external_error.exe : fatal error LNK1120: 1 unresolved externals
В моем первоначальном проекте эта ошибка возникла из-за другого внешнего символа (от type_writer writer;), но я думаю, что если я пойму, в чем причина ошибки в этом примере, я должен найти способ решить ее в моем собственном проекте.
Спасибо за прочтение !
Вы собираете только файл main.cpp
. Другие исходные файлы не будут автоматически построены и связаны, вы должны сделать это явно.
Вы вызываете core::function1();
, вы объявляете namespace core{ void function1(); }
, но я не вижу определения function1
в показанном вами коде. Если определения нет, то ваше использование приведет к неразрешенной внешней ошибке.
чувак, да, я вызвал functions () в functions.cpp вместо function1 () ... он решает ошибку, и поэтому ... ошибка из моего проекта находится где-то еще ...
functions
противfunction1
?