[질문] 라이브러리에서 함수가 선언이 않되어있다고 나올때...

글쓴이: 익명 사용자 / 작성시간: 화, 2001/11/13 - 3:05오후
안녕하세요..
지금 라이브러리를 공부하고 있는데 이상한게 하나 있어서 질문합니다.
라이브러리를 만들고 나서 main에서 라이브러리에 있는 함수를 호출하면
함수가 선언이 안되어있다고 나옵니다.
그래서 nm으로 라이브러리를 보면
00000000 T Quant__FPsTOii (호출하는 함수명은 Quant)
라고 되어있는데 T 라고 되어있으면 선언이 되어있다는 표시 아닌가요??
그런데 다른 함수를 보면 함수명만 나와있는데 위의 함수는 왜 함수명 뒤에
__FPsTOii라는게 더 붙어 있는지 알수가 없네요.
전에도 보면 함수명 뒤에 이런식으로 붙어있는것들만 함수가 선언이 안되어있다고
나오더네요.
같은 방법으로 컴파일했는데 다른 함수들은 제대로 선언이 되있고 위에 있는것처럼
되있는게 몇개 나오던데 왜 그런지요..
아시는분 답변 부탁드립니다.
Forums:
Re: [질문] 라이브러리에서 함수가 선언이 않되어있다고 나올때.
아마도 C++ 이름 장식 규칙이 적용된 듯 합니다.
함수를 만들때 C++ 로 컴파일하고, C 에서 호출하진 않으셨는지요?
C++ 소스에서 C 코드를 쓰려면
extern "C" {
C 코드
}
입니다.
Re: [질문] 라이브러리에서 함수가 선언이 않되어있다고 나올때.
c++쓰시면 overloaded function들도 함 check하심이...
해결했습다..
우선 답변에 감사드리구여..
main에서 호출하는게 2개 함수였는데 하나는 제대로 동작하고
하나가 정의가 않되어있다길래 다시 함 코드를 뒤졌봤습니다.
그러다 헤더파일에 다른거하고 같이 쓰는게 있어서
그쪽에 있는 함수를 정의해 준게 있는데 이번에 하면서
그 함수를 삭제를 했었습니다.
그러니까 헤더에는 함수가 있다고 해놓고 실제 코드에는
함수가 없었지요..
그 부분이 걸려서 혹시나 하고 헤더에서 지우고 하니까
문제가 해결되더군요...
이런게 문제가 될줄은 몰랐습니다..
그럼....
댓글 달기