|
일단 에러 메시지를 해석해 보죠.
무척 자주 발견되는 문장유형입니다.
[ILINK32 Error] Error: Unresolved external '__fastcall Vcl::Comctrls::TCustomRichEdit::FindTextA(const System::UnicodeString, int, int, System::Set<Vcl::Comctrls::TSearchType, 0, 1>)' referenced from D:\EQSOURCE\DEBUG_BUILD\UNITEDITOR.OBJ
1. Link Error 란건, Compile 은 문제없이 되었다는거죠.
2. Unresolved external "function(type)" reference 라는건, 외부 모듈 어딘가에 있을꺼라 생각하고(묵시적으로 선언된)
컴파일을 넘어간 함수의 정의부가 존재하지 않는다는겁니다.
3. 참조된 곳이 UNITEDITOR.OBJ 라고 했으니 UNITEDITOR.cpp 에서 참조되어 생긴 문제구요.
4. RAD Studio에서 RichEdit를 붙이고 멤버함수를 찾아보면 FindTextW 는 있지만 FindTextA 는 나오지 않습니다.
그 말은, 과거엔 AnsiString 을 지원했던 함수들이 거의 다 WideString/UnicodeString 을 지원하고 있다고 봐야겠죠.
5. 그러니 FindTextW 를 쓰시면 되실 것으로 생각됩니다.
Registry 사용하는거나 toolsAPI 쓰는 부분도 좀 차이가 있긴 하죠. 그런건 필요가 있을때나 예외적으로 익히셔야 할테고,
빌더6과 RAD Studio 와의 호환성 문제는 대개 Unicode 지원 문제니 조금만 센스를 발휘하면 똑같은 응용들로 풀 수 있습니다.
제대로 응용을 못하시겠거든, AnsiString, WideString/UnicodeString 에 대해서 꼼꼼히 조사해보시기 바라요.
장미 님이 쓰신 글 :
: void __fastcall TFormEditor::FindDialog1Find(TObject *Sender)
: {
: int FoundAt, StartPos, ToEnd;
: if (RichEdit1->SelLength)
: StartPos = RichEdit1->SelStart + RichEdit1->SelLength;
: else
: StartPos = 0;
: ToEnd = RichEdit1->Text.Length() - StartPos;
: FoundAt = RichEdit1->FindTextA(FindDialog1->FindTextA, StartPos, ToEnd, TSearchTypes()<<stMatchCase);
: .
: .
:
: 아래와 같은 에러가 발생합니다.
:
: [ILINK32 Error] Error: Unresolved external '__fastcall Vcl::Comctrls::TCustomRichEdit::FindTextA(const System::UnicodeString, int, int, System::Set<Vcl::Comctrls::TSearchType, 0, 1>)' referenced from D:\EQSOURCE\DEBUG_BUILD\UNITEDITOR.OBJ
: [ILINK32 Error] Error: Unable to perform link
:
: 마지막 문장이 문제 인 것 같은데 이리저리 해보아도 해결이 되지 않습니다.
: 도움이 필요 할 것 같습니다.
: 감사합니다.
|