아래 에러방지와 구성요소 읽어들이기를 어떻게 하는지?
도움 부탁드립니다.
에러내용 : ...access violation xxxx module in 'dts.dll'...
[VC++ Code]
typedef struct {
BOOL bDevOnline;
BOOL bADFsupport;
BOOL bHasDocInADF;
} DT_STATUS;
SDLL_API BOOL GetStatus(DT_STATUS *pStatus);
[Delphi7 Code]
type
PSTATUS = ^DT_STATUS;
DT_STATUS = packed record
bDevOnline : boolean;
bADFsupport : boolean;
bHasDocInADF : boolean;
end;
type
SDLL_GetStatus = function(PSTATUS : Byte):boolean;stdcall;
.
.
var
hLibrary : THandle;
GetStatus : SDLL_GetStatus;
procedure TSGT2500_F.cmdSClick(Sender: TObject);
var
parStream : Byte;
begin
hLibrary := 0;
hLibrary := LoadLibrary(PChar('dts.dll'));
@GetStatus := GetProcAddress(hLibrary, PChar('GetStatus'));
GetStatus(parStream); //요기서 에러가 발생하다가 말다가?
//무슨 작업을 추가해야 bDevOnline 등 값을 알 수 있나요?
end;
=끝=
SDLL_GetStatus = function(PSTATUS : Byte):boolean;stdcall;
저 같은 경우엔 이 Calling convention 부분에서 문제가 많이 생기 더군요.
VC에서 확인 해보시고 Calling convention을 확인해 보세요.
델파이의 프로젝트 파일에서 Advanced Compiler 부분을 보시면 Calling convention 설정하실 수 있습니다.
물론 위에 처럼 하셔두 됩니다.
전 카메라 쪽 DLL을 붙일 때 이 것 때문에 좀 고생을 했었습니다. ^^