|
matrox lite 8.0을 사용하는 중인데..
dll을 import 해서 사용합니다...
문자열 인자로 주는데서 계속 에러가 납니다..
그 부분을 MsysAlloc과 MdigAlloc에서
포인터로 문자열을 인자로 줄때 에러가 납니다..
고수님께 정중희 부탁드립니다..
헤멘지 벌써 10일이 지났습니다...
//
TfrmImg *frmImg;
/*
//카메라 또는 디지타이저 세팅
typedef MIL_ID __stdcall __declspec(dllimport)Func_MappAlloc(long InitFlag,MIL_ID *ApplicationIdPtr);
typedef MIL_ID __stdcall __declspec(dllimport)Func_MsysAlloc(MIL_TEXT_PTR SystemDescriptor,long SystemNum,long InitFlag,MIL_ID *SystemIdPtr);
typedef MIL_ID __stdcall __declspec(dllimport)Func_MdigAlloc(MIL_ID SystemId,long DigNum,MIL_TEXT_PTR DataFormat,long InitFlag,MIL_ID *DigIdPtr);
typedef MIL_ID __stdcall __declspec(dllimport)Func_MbufAlloc2d(MIL_ID SystemId,long SizeX,long SizeY,long Type,MIL_INT64 Attribute,MIL_ID *BufIdPtr);
typedef void __stdcall __declspec(dllimport)Func_MbufClear(MIL_ID DestImageBufId,double Color);
typedef void __stdcall __declspec(dllimport)Func_MdigControl(MIL_ID DigId,long ControlType,double ControlValue);
//이미지 그랩
typedef void __stdcall __declspec(dllimport)Func_MdigGrab(MIL_ID DigId,MIL_ID DestImageBufId);
typedef long __stdcall __declspec(dllimport)Func_MbufInquire(MIL_ID BufId,long InquireType,void *UserVarPtr);
//카메라 및 메모리 해제
typedef void __stdcall __declspec(dllimport)Func_MbufFree(MIL_ID BufId);
typedef void __stdcall __declspec(dllimport)Func_MdigFree(MIL_ID DigId);
typedef void __stdcall __declspec(dllimport)Func_MsysFree(MIL_ID SystemId);
typedef void __stdcall __declspec(dllimport)Func_MappFree(MIL_ID ApplicationId);
Func_MappAlloc *MappAlloc;
Func_MsysAlloc *MsysAlloc;
Func_MdigAlloc *MdigAlloc;
Func_MbufAlloc2d *MbufAlloc2d;
Func_MbufClear *MbufClear;
Func_MdigControl *MdigControl;
Func_MdigGrab *MdigGrab;
Func_MbufInquire *MbufInquire;
Func_MbufFree *MbufFree;
Func_MdigFree *MdigFree;
Func_MsysFree *MsysFree;
Func_MappFree *MappFree;
//---------------------------------------------------------------------------
__fastcall TfrmImg::TfrmImg(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TfrmImg::InitModule()
{
hiInstance = LoadLibrary("mil.dll");
MappAlloc = (Func_MappAlloc *)GetProcAddress(hiInstance, "MappAlloc");
MsysAlloc = (Func_MsysAlloc *)GetProcAddress(hiInstance, "MsysAlloc");
MdigAlloc = (Func_MdigAlloc *)GetProcAddress(hiInstance, "MdigAlloc");
MbufAlloc2d = (Func_MbufAlloc2d *)GetProcAddress(hiInstance, "MbufAlloc2d");
MbufClear = (Func_MbufClear *)GetProcAddress(hiInstance, "MbufClear");
MdigControl = (Func_MdigControl *)GetProcAddress(hiInstance, "MdigControl");
MbufInquire = (Func_MbufInquire *)GetProcAddress(hiInstance, "MbufInquire");
MbufFree = (Func_MbufFree *)GetProcAddress(hiInstance, "MbufFree");
MdigFree = (Func_MdigFree *)GetProcAddress(hiInstance, "MdigFree");
MsysFree = (Func_MdigFree *)GetProcAddress(hiInstance, "MsysFree");
MappFree = (Func_MappFree *)GetProcAddress(hiInstance, "MappFree");
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmImg::FormCreate(TObject *Sender)
{
InitModule();
}
//---------------------------------------------------------------------------
void __fastcall TfrmImg::FormClose(TObject *Sender, TCloseAction &Action)
{
FreeLibrary(hiInstance);
}
//---------------------------------------------------------------------------
void __fastcall TfrmImg::btnInitClick(TObject *Sender)
{
MappAlloc(M_DEFAULT,&MilApplication);
MsysAlloc(M_SYSTEM_SOLIOS,M_DEFAULT,M_DEFAULT,&MilSystem);
MdigAlloc(MilSystem,M_DEV0,milDcf,M_DEFAULT,&MilDigitizer);
MbufAlloc2d(MilSystem,width,height,16+M_UNSIGNED,M_IMAGE+M_GRAB,&MilImage);
MbufClear(MilImage,0xff);
MdigControl(MilDigitizer,M_GRAB_MODE,M_ASYNCHRONOUS);
}
//---------------------------------------------------------------------------
void __fastcall TfrmImg::btnGrabClick(TObject *Sender)
{
MdigGrab(MilDigitizer,MilImage);
MbufInquire(MilImage,M_HOST_ADDRESS,&pImg);
}
//---------------------------------------------------------------------------
void __fastcall TfrmImg::btnFreeClick(TObject *Sender)
{
MbufFree(MilImage);
MdigFree(MilDigitizer);
MsysFree(MilSystem);
MappFree(MilApplication);
}
///
그런데
MsysAlloc(M_SYSTEM_SOLIOS,M_DEFAULT,M_DEFAULT,&MilSystem);
MdigAlloc(MilSystem,M_DEV0,milDcf,M_DEFAULT,&MilDigitizer);
에러가 납니다..
MIL_TEXT_PTR 는 mil.h에서 보면
char *로 선언 되어 있습니다.
왜 애러가 나는지
어떻게 해결하셨는지
한수 부탁드립니다...
|