Q&A

  • VC DLL 어떻게 변환해야 될지 모르겠네요
안녕하세요.
VC CPrintOrder.dll 파일이 있고 헤더 파일(CPrintOrder.h)에는 아래와 같이 선언되어 있습니다.

CPrintOrder.h =======================

#ifdef CPRINTORDER_EXPORTS
#define CPRINTORDER_API __declspec(dllexport)
#else
#define CPRINTORDER_API __declspec(dllimport)
#endif

class CPRINTORDER_API CPrintOrder  
{
public:
    long ReleaseOrder(const char* pszKioskOrder);
    long GetSelfDeviceName(CString& strDeviceName);
    long ChangePriority(const char* pszKioskOrder, long lPriority);
pszKioskOrder, char* pszFdiaNo, int nMaxCntFdiaNo);
    CPrintOrder(const char* pszOutDeviceName);
//    CPrintOrder();
    virtual ~CPrintOrder();
private:
    void GetFreeStringForPrintOrder(CString PrintSizeName);
    void* m_pData;
};

====================================

이 부분을 델파이로 변환을 어떻게 해야 될지 모르겠네요.
예제(VC++)에서는 아래와 같이 사용했는데
m_pPrintOrder = new CPrintOrder(m_strOutDevice);
델파이에서는 어떻게 해야 할지 ...
그냥 DLL을 정적/동적으로 써보기도 하고 있는데 안되구요 방법을 모르겠네요.
function ReleaseOrder(pszKioskOrder : PChar):LongInt; stdcall; external 'CPrintOrder.dll' name 'CPrintOrder';

수고하시고 좋은 하루 보내십시요.
1  COMMENTS
  • Profile
    도끼로이마까 2006.02.14 00:12

    class 형태로 export된 dll은 visual c++에서만 사용가능합니다.
    class 그대로를 delphi에서 사용할 수 없죠.
    그래도 꼭 사용하셔야 한다면요.
    class의 public 함수 부분을 일반 함수로 export하는 wrapper dll을 작성하셔야 할 듯 합니다.
    물론 wrapper dll은 visual c++로만 제작 가능합니다.
    최종적으로 dll이 두개가 되겠네요.
    class가 export된 dll과 그것을 wrapping한 wrapping dll..

    long create_printorder_instance(); // 클래스의 인스턴스를 생성해서 반환
    void destroy_printorder_instance(); // 생성된 클래스 인스턴스 소멸

    long ReleaseOrder(long inst, const char* pszKioskOrder);
    long GetSelfDeviceName(long inst, char* strDeviceName);
    long ChangePriority(long inst, const char* pszKioskOrder, long lPriority);
    ...

    물론 델파이에서 지원하지 않는 CString같은것들도 char *로 wrapping해야겠지요.
    이해가 되셨나 모르겠네요 ^^