• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

왜 안될까요 컴파일러 문제일까요?

23.07.15 23:42 작성 조회수 253

1

헤더만 사용하면 항상 에러가 나는데 왜인지 잘 모르겠습니다.


directory 구조는

8-8_haeder
- main.cpp
- calc.cpp
- Calc.h

하지만 빌드하면 아래와 같은 에러가 뜹니다

Starting build...
/usr/bin/clang++ -std=c++17 -fcolor-diagnostics -fansi-escape-codes -g /Users/user/Documents/cpp/8-8_header/main.cpp -o /Users/user/Documents/cpp/8-8_header/main
Undefined symbols for architecture arm64:
  "Calc::add(int)", referenced from:
      _main in main-0ed3f2.o
  "Calc::mul(int)", referenced from:
      _main in main-0ed3f2.o
  "Calc::sub(int)", referenced from:
      _main in main-0ed3f2.o
  "Calc::print()", referenced from:
      _main in main-0ed3f2.o
  "Calc::Calc(int)", referenced from:
      _main in main-0ed3f2.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Build finished with error(s).

Mac m1인데 컴파일러 문제일까요?

아래는 코드입니다.

//calc.cpp
#include "Calc.h"

using namespace std;

Calc::Calc(int init_value)
    : m_value(init_value) {}

Calc& Calc::add(int value)
{
    m_value += value;
    return *this;
}

Calc& Calc::mul(int value)
{
    m_value *= value;
    return *this;
}

Calc& Calc::sub(int value)
{
    m_value -= value;
    return *this;
}

void Calc::print()
{
    cout << m_value << endl;
}

 

//Calc.h
#pragma once
#include <iostream>

class Calc
{
private:
    int m_value;

public:
    Calc(int init_value);

    Calc& add(int value);
    Calc& mul(int value);
    Calc& sub(int value);
    void print();
};

 

//main.cpp
#include <iostream>
#include "Calc.h"
using namespace std;

int main()
{
    Calc cal(10);
    cal.add(10).sub(1).mul(2).print();
}

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2023.07.16

안녕하세요, 답변 도우미 Soobak 입니다.

에러 내용을 살펴보니, 현재 main.cpp 파일만을 컴파일하고 계셔서 링킹 과정에서 에러가 나고 있네요.

calc.cpp 파일도 추가시키셔서 컴파일을 진행해보세요.

clang++ 을 사용하신다면, 해당 cpp 파일들이 있는 곳에서 clang++ -std=c++17 ./main.cpp ./clac.cpp 명령어로 컴파일 해보시길 바랍니다.

 

 

yahoo님의 프로필

yahoo

질문자

2023.07.16

오! 잘 작동합니다 !!! build & link 이슈이군요! 관련 키워드로 좀더 공부해보겠습니다. 감사합니다 ~!