|
Starlet 님이 쓰신 글 :
: 안녕하세요.
: 각각의 소스가 컴파일되어 obj파일이 생성될때, 함수의 소스코드가 없으면 일단 함수명만 가지고 있고 Link될때 다른 obj 파일에서 찾아 실제 코드로 대체됩니다. "Unresolved external...."은 함수가 쓰이긴 했는데 원래 소스코드를 프로젝트내의 어떤 파일에서도 찾을수 없을때 나오는 에러입니다.
: 즉, 아래 소스에서 SetFileName이 쓰였으나 이 함수가 어디에도 없다는 이야기지요. SetFileName 함수를 작성해 놓으신곳을 자세히 보시면 void __fastcall TForm1::SerFileName(const AnsiString FileName)) 으로 Set이 아닌 Ser로 오타가 나 있습니다. 그래서 SetFileName이 링크때 에러가 나는 것입니다.
:
:
: 쥬신 님이 쓰신 글 :
: : 에러 네용입니다...
: : [Linker Error] Unresolved external '__fastcall TForm1::SetFileName(const System::AnsiString)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\EDITUNIT.OBJ
: : 보시는데로 obj오류로 디비깅을 열심히 하고 있는 중입니다....아직 다 완성한것은 아니구요 출력하면 나올수 있게 해났습니다.....보는데 짜증네지 마시고 봐주세요.....add to prject..는 말안해도 어디서 해야 하는지 아실겁니다..
: : #include <vcl.h>
: : #pragma hdrstop
: :
: : #include "EditUnit.h"
: : #include "RichRes.h"
: : #include <stdlib.h>
: : #include <stdio.h>
: : //---------------------------------------------------------------------------
: : #pragma package(smart_init)
: : #pragma resource "*.dfm"
: : TForm1 *Form1;
: : //---------------------------------------------------------------------------
: : __fastcall TForm1::TForm1(TComponent* Owner)
: : : TForm(Owner)
: : {
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::N1Click(TObject *Sender)
: : {
: : SetFileName((AnsiString)LoadStr(Untitled_101));
: : RichEdit1->Lines->Clear();
: : RichEdit1->Modified = False;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::SerFileName(const AnsiString FileName)
: : {
: : LPSTR lpBuf = new char[ MAX_PATH];
: : sprintf(lpBuf, LoadStr(Percent_s_102).c_str(),
: : ExtractFileName(FileName).c_str(),
: : Application->Title.c_str());
: : Caption = (AnsiString)lpBuf;
: : FFileName = FileName;
: : delete lpBuf;
: : }
: : /*__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)//-이부분 좀 설명좀요 :TForm을 어떻게 쓰이
: : //는거죠
: : {
: : SetFileName((AnsiString)LoadStr(Untitled_101));
: : } */
: : void __fastcall TForm1::S1Click(TObject *Sender)
: : {
: : if(!strcmp(FFileName.c_str(), LoadStr(Untitled_101).c_str()) )
: : {
: : A1Click(Sender);
: : }
: : else
: : {
: : AnsiString BackupFileName = ChangeFileExt(FFileName, ".BAK");
: : DeleteFile(BackupFileName);
: : RenameFile(FFileName, BackupFileName);
: : RichEdit1->Lines->SaveToFile(FFileName);
: : RichEdit1->Modified = False;
: : }
: : }
: :
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
: : {
: : if(RichEdit1->Modified)
: : {
: : switch(Application->MessageBox("텍스트를 저장하시겠습니까?", "에디터",
: : MB_YESNOCANCEL|MB_ICONWARNING))
: : {
: : case IDYES:
: : {
: : S1Click(this);
: : CanClose = true;
: : }
: : break;
: : case IDNO:
: : {
: : }
: : break;
: : case IDCANCEL:
: : {
: : CanClose = false;
: : }
: : break;
: : default:
: : {
: : throw Exception("에러 발생");
: : }
: : }
: : }
: : }
: : void __fastcall TForm1::CheckFileSave(void)
: : {
: : if(RichEdit1->Modified)
: : {
: : switch(MessageBox(Handle, LoadStr(SaveChanges_103).c_str(),
: : LoadStr(Confirmation_104).c_str(), MB_YESNOCANCEL|
: : MB_ICONQUESTION))
: : {
: : case ID_YES : S1Click(this);
: :
: : case ID_CANCEL : Abort();
: : };
: : }
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TForm1::A1Click(TObject *Sender)
: : {
: : if(SaveDialog1->Execute() )
: : {
: : RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
: : SetFileName(SaveDialog1->FileName);
: : RichEdit1->Modified = False;
: : }
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TForm1::X1Click(TObject *Sender)
: : {
: : Close();
: : }
: :
: :
: :
: : #include <vcl.h>
: : #pragma hdrstop
: : //---------------------------------------------------------------------------
: : USERES("Editproj.res");
: : USEFORM("EditUnit.cpp", Form1);
: : USERC("RichRes.rc");
: : //---------------------------------------------------------------------------
: : WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
: : {
: : try
: : {
: : Application->Initialize();
: : Application->CreateForm(__classid(TForm1), &Form1);
: : Application->Run();
: : }
: : catch (Exception &exception)
: : {
: : Application->ShowException(&exception);
: : }
: : catch (...)
: : {
: : try
: : {
: : throw Exception("");
: : }
: : catch (Exception &exception)
: : {
: : Application->ShowException(&exception);
: : }
: : }
: : return 0;
: : }
: : //---------------------------------------------------------------------------
: : //RichRes.cpp파일입니다.
: :
: : #include "RichRes.h"
: :
: : STRINGTABLE
: : {
: : Untitled_101, "제목없음"
: : Percent_s_102, "%s - %s"
: : SaveChanges_103, "변경된 사항을 저항하시겠습니까?"Confirmation_104, "확실합니까?"
: : Numberbetween_105, "숫자는 반드시 1에서 1638사이의 값이어야만 합니다."
: : Restart_106, "%s를 보기 위해 애플리게이션을 다시 시작하십시오."Restart_107, "버전."
: : }
: :
: : //-----------------------------------------------------
: : //RichRes.h파일입니다
: :
: : #define Untitled_101 101
: : #define Percent_s_102 102
: : #define SaveChanges_103 103
: : #define Confirmation_104 104
: : #define Numberbetween_105 105
: : #define Restart_106 106
: : #define Restart_107 107
|