|
그렇군요.
static이 다른언어와 조금 틀리네요.
답변 감사합니다.
김태선 님이 쓰신 글 :
: 왕께서 공부에 열심이시군요 ^^;
:
: static은 쓰이는 곳에 따라 의미에 차이가 조금씩 있는데, 질문의 경우
: : static void compress ( Char *name );
: 선언은 compress 함수가 unit3.obj 내에만 있다는 뜻이며, 다른 곳에서는 인식할 수 없다는 뜻입니다.
: 그러므로 compress 함수는 unit3.cpp 내에 구현되어 있어야 합니다.
: 컴파일 에러 메시지는 unit3.obj 내메 한정된 함수를 unit1.obj 에서 부를려고 했기 때문에 링크 에러가 난 것입니다.
: 이를 static 을 풀면 외부 참조가 가능하니 unit1.cpp 에서 부를 수 있지만, 다른 에러가 있다고 했는데 이는 함수 명이 겹쳐서 생기는 문제입니다. 함수명을 바꾸거나 하는 방법으로 해결할 수 있습니다.
: 언어를 제대로 하려면 예약어에 대해서는 분명하게 아셔야 합니다.
:
: 그럼 .
:
: 정용훈 님이 쓰신 글 :
: : bcb6 왕초입니다. 답변 부탁드려요.
: :
: : //Unit3.h---------------------------------------------------------------------------
: : ....
: : #include "bzlib.h"
: : ....
: :
: : static void compress ( Char *name );
: : //---------------------------------------------------------------------------
: :
: : //Unit1.cpp---------------------------------------------------------------------------
: : #include "Unit3.h"
: : ...
: : void __fastcall TForm1::Button4Click(TObject *Sender)
: : {
: : compress ( "C:\\Documents and Settings\\jyh\\바탕 화면\\a.msi" );
: : }
: : ...
: : //---------------------------------------------------------------------------
: : bzip2 소스를 사용할려고 하는 중입니다.
: : 저 상태에서 컴파일을 하게 되면 이상하게 아래와 같은 에러가 나내요..
: :
: : [C++ Error] Unit1.cpp(105): E2451 Undefined symbol 'compress(char *)'
: :
: : static void compress ( Char *name ); 여기서 static을 제거 하면 되긴하던데 다른 에러가 생겨서..
: : 왜 static함수는 호출을 하지 못하는 것이죠??
|