2016-12-07 1 views
0

이것은 백만 번 응답되었을 것입니다. 그러나 적절한 해결책을 찾을 수 없습니다.g ++ 정의되지 않은 스탠딩 함수에 대한 참조

나는 sensor.cpp에 무료 기능을 정의했습니다 :

std::string printTargetGasName(enalu::CombThreshold::TargetGas){} 

가 그럼 난 함수의 프로토 타입을 선언 한

std::string printTargetGasName(enalu::CombThreshold::TargetGas); 

sensor.hpp에 그럼 난 core_enose.hpp에서 sensor.hpp을 포함하고 시도 core_enose.cpp에있는 함수를 사용하려면 (enalu은 단지 na입니다. mespace). 나는 또한보고 확인

g++ -g -Wall -Wextra -pedantic -std=c++11 [...] obj_dbg/core_enose.opp [...] obj_dbg/sensor.opp [...] 

다음 sensor.opp가 core_enose.opp 다음에 오는 즉

내가 오류를 메이크 파일에

core_enose.cpp:284: undefined reference to `enalu::printTargetGasName(enalu::CombThreshold::TargetGas)' 

링킹 지침을 연결 undefined reference 얻을이 올바른 것 symbol이 sensor.opp 파일에 올바르게 존재하는 경우 :

$> nm obj_dbg/sensor.opp | grep printTarget 
$> 000000000000cc9c T _Z18printTargetGasNameN5enalu13CombThreshold9TargetGasE 

extern과 같은 필사적 인 심야 측정을 시도했거나 sensor.hpp를 직접 core_enose.cpp 파일에 포함 시켰습니다. 아무 것도 도움이되지 않으며이 시점에서 나는 절망적 인 간단한 대답에 좌절감을 느낍니다.

sensor.?pp 파일에는 내 프로그램에서 사용하고있는 몇 가지 클래스가 포함되어 있기 때문에 코드를 제공하지 않습니다. 위에서 설명한 것은 다른 기능을하는 응용 프로그램에이 무료 기능을 추가하기 위해 제가 수행 한 정확한 단계입니다.

도와 주시겠습니까?

+0

정확하게 sensor.hpp에서 함수를 선언 한 방법입니까? –

+0

@ YanZhou 아니, 나는 단순히 구현의 내부를'{...} '사이에 생략했습니다. (또한 함수의 복귀를 고정하는 걸 잊었습니다.) – nass

+0

Yan Zhou의 질문은 구현이 아니라 .hpp 파일의 선언에 관한 것입니다. –

답변

1

링크 오류가 약 enalu::printTargetGasName이므로 나는 enalu 네임 스페이스 내의 헤더에 함수를 선언했지만 해당 C++에는 네임 스페이스 인클로저가 없습니다. 이로 인해 sensor.cpp 파일에서 문제가 해결 될 수 있습니다.

namespace enalu 
{ 
    std::string printTargetGasName(enalu::CombThreshold::TargetGas){} 
}; 
관련 문제