2017-06-26 21 views
-1

を使用して、私は私のプログラムにDLLをインポートし、そして次のようにいくつかの機能があります。C++ DLLをインポートし、そのコールバックfuntions

typedef int (*FEEDQ_CALLBACK)   (long nSD, long nQtype, long nNumber) ; 
typedef int (*CALLDISP_CALLBACK)  (AODFeedDispositionBase* CallDisposition); 
typedef int (*SERVICE_STATUS_CALLBACK) (long nSD, long nStatus) ; 
typedef int (*AUTH_SERVICE_CALLBACK) (long nSD, char* sSDesc, long nSType) ; 
typedef int (*INBOUND_ABANDON_CALLBACK) (long nSD, DCCProInboundDisposition* inbounCall) ; 
typedef int (*SESSION_STATUS_CALLBACK) (long lTypeId, long lStatus) ; 

extern "C" 
{ 
    //Methods 
    AODFEEDAPI short Initialize(const char * sTenantName, const char * sUserID, const char * sPassword, AUTH_SERVICE_CALLBACK pAuthSrvFunc, SERVICE_STATUS_CALLBACK pSrvStatFunc, FEEDQ_CALLBACK pFeedQFunc, CALLDISP_CALLBACK pCallDispFunc, INBOUND_ABANDON_CALLBACK pInboundCallFunc, SESSION_STATUS_CALLBACK pSessionStatFunc = 0); 
    AODFEEDAPI short Close(); 
    AODFEEDAPI short StopService(long nServiceID, long nQueueAction); 
    AODFEEDAPI short StartService(long nServiceID); 
} 

私はDLLでInitialize()関数を呼び出すしたいと思います。私はコールバック関数でどのようにパラメータを渡すべきかについて混乱しています。

+0

例は本当にいいでしょう:) –

+0

「コールバック関数でパラメータを渡す」とはどういう意味ですか?コールバック関数が何であるか知っていますか? – immibis

+0

もし私が説明してください:)それはどのように動作するのですか –

答えて

0

コールバックにパラメータを渡すことはありません。コールバックは、独自のコードで定義した関数であり、必要に応じて呼び出すことができるようにDLLに渡し、パラメータを渡します。例:

int MyFeedQCallback(long nSD, long nQtype, long nNumber) 
{ 
    // do something... 
} 

int MyCallDispCallback(AODFeedDispositionBase* CallDisposition) 
{ 
    // do something... 
} 

int MyServiceStatusCallback(long nSD, long nStatus) 
{ 
    // do something... 
} 

int MyAuthServiceCallback(long nSD, char* sSDesc, long nSType) 
{ 
    // do something... 
} 

int MyInboundAbandonCallback(long nSD, DCCProInboundDisposition* inbounCall) 
{ 
    // do something... 
} 

int MySessionStatusCallback(long lTypeId, long lStatus) 
{ 
    // do something... 
} 

int main() 
{ 
    ... 
    short ret = Initialize("tenant name", "user ID", "password", &AuthServiceCallback, &MyServiceStatusCallback, &MyFeedQCallback, &MyCallDispCallback, &MyInboundAbandonCallback, &MySessionStatusCallback); 
    ... 
    long serviceID = ...; 
    StartService(serviceID); 
    ... 
    StopService(serviceID, queueAction); 
    ... 
    Close(); 
    return 0; 
} 
+0

私はこれを試してみていただきありがとうございます:) –

+0

ちょっと@Remi私はこのDLLを持っていますどのように実装するかについてのガイドなしに。この例で作成したメソッドを呼び出す方法を教えてください。これらのメソッドを 'Initialize'メソッドの前に呼び出す必要がありますか?メソッドに値を渡す方法について私に説明することができれば大いに感謝します。問題を起こして申し訳ありませんが、私はC++を知りません:) –

+0

@VidathAdheesha **あなたは** DLL **呼び出す –

関連する問題