extern "C"기능이있는 CPP가 있습니다. 파일이 모두 하나의 파일에 있으면 모든 것이 훌륭하게 작동합니다. 조직적인 목적으로 기능을 다른 파일로 분리하려고합니다.extern "C"가있는 두 파일에서 C++ lnk2005 오류가 발생하는 이유는 무엇입니까?
File_One.cpp
#pragma once
#include "stdafx.h"
#include <windows.h>
#include "Functions.h"
#include "Variables.h"
#include <string>
#include "File_Two.cpp"
extern "C"
{
__declspec(dllexport) void MethodOne()
{
MethodTwo();
}
}
File_Two.cpp 내 다른 순서로 헤더를 포함 정리 시도
#pragma once
#include "stdafx.h"
#include <windows.h>
#include "Functions.h"
#include "Variables.h"
#include <string>
extern "C"
{
__declspec(dllexport) void MethodTwo()
{
}
}
, 심지어 :
그래서 나는이 두 파일이 있다고 할 수 있습니다 files_two.cpp에 대한 include가 아닌 file_one.cpp에 헤더를 포함시키지 말고 항상 같은 오류가 발생합니다.
1) 오류 LNK1169 : 하나 개 이상의 곱하기 정의 기호
2) 오류 LNK2005을 발견 : _MethodTwo 이미 정확히 내가 잘못 뭐하는 거지
File_One.obj
에 정의? 문제를 해결하려면 어떻게해야합니까?감사합니다.
하나의 cpp 파일을 다른 파일에 포함시키는 것은 일반적으로 좋지 않습니다. 그렇게한다면, 포함 된 cpp 파일이 컴파일되고 링크되어 있지 않은지 확인해야합니다. –
당신의 충고를 받아서 헤더 파일을 만들었고 효과가있었습니다. –