2013-01-24 4 views
0

J'écris une application sur VC++ en utilisant SAGEM MORPHO DLL.
La DLL Je me réfère est MORPHO_SDK.dll
La fonction est exposée jeAppeler C++ dll dans VC++

C_MORPHO_User::Enroll (US i_us_Timeout,UC i_uc_FingerNumber, T_MORPHO_TYPE_TEMPLATE i_x_TemplateType, 
    UL i_ul_CallbackCmd, 
    T_MORPHO_CALLBACK_FUNCTION i_pf_Callback, 
    PVOID i_pv_CallbackArgument, 
    I i_i_CoderChoice, 
    UL i_ul_DetectModeChoice 
) 

La façon dont je fais appel est

int res; 
    C_MORPHO_User u,nw,idf; 

extern "C 
" __declspec(dllimport) int Enroll (US i_us_Timeout,UC i_uc_FingerNumber, 
    T_MORPHO_TYPE_TEMPLATE i_x_TemplateType, 
    UL i_ul_CallbackCmd, 
    T_MORPHO_CALLBACK_FUNCTION i_pf_Callback, 
    PVOID i_pv_CallbackArgument, 
    I i_i_CoderChoice, 
    UL i_ul_DetectModeChoice 
) ; 
main() 
{ 
int x=u.Enroll(0x15,1,MORPHO_PK_ISO_FMR ,0,NULL,NULL,MORPHO_MSO_V9_CODER ,MORPHO_ENROLL_DETECT_MODE); 
    printf("%d\n",x); 
} 

Lors de la compilation Je reçois ces erreurs

erreur 1.syntax: manquant ';' avant l'identificateur 'u'
2.C_MORPHO_User: spécificateur de classe de stockage ou spécificateur de type manquant.

Est-ce la façon correcte d'appeler la DLL. Veuillez aider à résoudre le problème.

+1

La réponse immédiate à votre première question est * non *, ce n'est * pas * la bonne façon d '«appeler la DLL». Pour commencer, vous avez besoin de la définition de classe de votre fichier .h. – WhozCraig

+1

Un couple de choses: D'abord vous devez inclure le fichier d'en-tête où 'C_MORPHO_User' est défini. Deuxièmement, vous ne devez pas déclarer une fonction autonome 'Enroll' car c'est une fonction membre de' C_MORPHO_User' et elle sera déclarée comme faisant partie de la définition de la classe 'C_MORPHO_User'. –

+0

Lorsque j'inclue les fichiers d'en-tête respectifs Fichiers d'en-tête, il donne des erreurs comme C_MORPHO_TemplateList ': classe de base indéfini, C_MORPHO_FieldList': classe de base indéfinie, erreur de syntaxe: identifiant 'C_MORPHO_TemplateList' etc ... – WallPoster

Répondre

0

J'ai inclus tous les fichiers d'en-tête nécessaires et il a résolu le problème.

Questions connexes