|
VC++(.NET 2003)에서 시리얼 통신 클래스를 COM 형태로 만들었습니다.
그런데, CSerial 클래스의 메소드 중에서 Overloading된 SetTimeOut 메서드를 Builder에서 호출할때
약간의 문제가 발생합니다.
///////////////////////////////////////////////////////////////////////////////////////
interface ISerialComponent : IUnknown
{
//...
//! setup timeout #1
virtual void __stdcall SetTimeOut(DWORD readinterval,
DWORD readmultiplier, DWORD readconstant,
DWORD writemultiplier, DWORD writeconstant)=0;
//! setup timeout #2
virtual void __stdcall SetTimeOut(DWORD timeout)=0;
//...
}
///////////////////////////////////////////////////////////////////////////////////////
저런식으로 정의된 두 개의 SetTimeOut 메서드가 있습니다.
VC++에서는 SetTimeOut(0) 을 호출하면, 두 번째 메서드가 호출되는데,
Builder에서는 SetTimeOut(0, 1233, 2323, 3434) 처럼 두 번째 파라미터 부터
쓰레기 값이 들어간 첫 번째 SetTimeOut 메서드가 호출되네요..
함수 call 방식에 따른 문제 같은데, 어떻게 해결해야 할까요?
__stdcall을 제거하면, Builder에서는 해당 메서드를 찾지 못합니다.
|