Q&A

  • 간단한 dll이 에러가 나네요.. 소스 올리니 보구 잘못된데 말해주세용
에러 메시지는 VB에서 부르면 지정한 파일을 참조가능한 형식으로 부를수 없습니다.

이고 델파이에서 부르면 유형 라이브러리 / DLL 로드 오류입니다.

이게 뜹니다...



library ActKorDll;



uses

ComServ,

Activex,

windows,

sharemem;



exports

DllGetClassObject,

DllCanUnloadNow,

DllRegisterServer,

DllUnregisterServer;



{$R *.RES}



const

CP_UTF8 = 65001; // UTF-8 pseudo-codepage, defined in Windows.pas in Delphi 3 and newer.

CP_UNICODE = 1200; // Unicode pseudo-codepage,

ISO_8859_1 = 28591; // Western Alphabet (ISO)

ISO_8859_2 = 28592; // Central European Alphabet (ISO)

ISO_8859_3 = 28593; // Latin 3 Alphabet (ISO)

ISO_8859_4 = 28594; // Baltic Alphabet (ISO)

ISO_8859_5 = 28595; // Cyrillic Alphabet (ISO)

ISO_8859_6 = 28596; // Arabic Alphabet (ISO)

ISO_8859_7 = 28597; // Greek Alphabet (ISO)

ISO_8859_8 = 28598; // Hebrew Alphabet (ISO)



function StringToWideString(const s: AnsiString; codePage: word): WideString;stdcall;

var

l: integer;

begin

if s = '' then

Result := ''

else begin

l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);

SetLength(Result, l-1);

if l > 1 then

MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), -1, PWideChar(@Result[1]), l-1);

end;

end; { StringToWideString }





function WideStringToString(const ws: WideString; codePage: Word): AnsiString;stdcall;

var

l: integer;

begin

if ws = '' then

Result := ''

else begin

l := WideCharToMultiByte(codePage,

WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,

@ws[1], -1, nil, 0, nil, nil);

SetLength(Result, l-1);

if l > 1 then

WideCharToMultiByte(codePage,

WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,

@ws[1], -1, @Result[1], l-1, nil, nil);

end;

end; { WideStringToString }



exports

StringToWideString index 1, WideStringToString index 2;

begin

end.

0  COMMENTS