Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
467 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  TAPI et erreur de linkage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TAPI et erreur de linkage

n°422624
pilou51
Posté le 10-06-2003 à 14:48:27  profilanswer
 

Salut,
 
Voilà j'essaie de faire un soft utilisant TAPI (Telephony API) en C++, et lorsque j'essaie de compiler, j'ai des erreurs de link :  

Code :
  1. --------------------Configuration: TAPIConsole - Win32 Debug--------------------
  2. Compiling...
  3. main.cpp
  4. Linking...
  5. LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
  6. main.obj : error LNK2001: unresolved external symbol "protected: int __thiscall CTapiConnection::HandleLineErr(long)" (?HandleLineErr@CTapiConnection@@IAEHJ@Z)
  7. main.obj : error LNK2001: unresolved external symbol "public: static void __stdcall CTapiConnection::lineCallbackFunc(unsigned long,unsigned long,unsigned long,unsigned long,unsigned long,unsigned long)" (?lineCallbackFunc@CTapiConnection@@SGXKKKKKK
  8. @Z)
  9. libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
  10. Debug/TAPIConsole.exe : fatal error LNK1120: 3 unresolved externals
  11. Error executing link.exe.
  12. TAPIConsole.exe - 4 error(s), 1 warning(s)


 
Le soft utilise aussi afxwin.h, qui est une grosse usine à gaz et m'a obligé à passer en multithreaded... C'est en grande partir un prog d'exemple que j'ai récupéré de la msdn, alors je suis à peu près sûr qu'il y a pas d'erreur de code :)  
 
Merci d'avance :)

mood
Publicité
Posté le 10-06-2003 à 14:48:27  profilanswer
 

n°422637
skeye
Posté le 10-06-2003 à 14:53:55  profilanswer
 

Il faut que tu dises à ton compilo ou se trouve ta lib...il a pas l'air de savoir où elle se cache!


---------------
Can't buy what I want because it's free -
n°422645
pilou51
Posté le 10-06-2003 à 14:56:04  profilanswer
 

ben j'ai rajouté tapi32.lib, normalement ça suffit... à moins qu'il en faille une autre pour afxwin ?

n°422648
skeye
Posté le 10-06-2003 à 14:57:14  profilanswer
 

pilou51 a écrit :

ben j'ai rajouté tapi32.lib, normalement ça suffit... à moins qu'il en faille une autre pour afxwin ?


Euh là aucune idée, j'y connais rien en prog windoze...je passe! :whistle:


---------------
Can't buy what I want because it's free -
n°422650
pilou51
Posté le 10-06-2003 à 14:57:39  profilanswer
 

hihi oki merci qd mm:)

n°422806
Joel F
Real men use unique_ptr
Posté le 10-06-2003 à 15:57:35  profilanswer
 

tu travaille sous Visual ?
si oui, regarde si tu as bien ajouté tapi32.lib dans les Projects Settings ou alors utilise un pragma comment.

n°422852
pilou51
Posté le 10-06-2003 à 16:07:31  profilanswer
 

Je suis sous Visual 6.0 oui...
J'ai bien mis le tapi32.lib dans les projet settings...  
 
euh et pragma comment, le mot me rappelle vaguement qqchose, mais ça semble loin, tu peux me rafraichir la mémoire stp ? :)

n°422859
Joel F
Real men use unique_ptr
Posté le 10-06-2003 à 16:09:26  profilanswer
 

alors ca doit etre :
 
 

Code :
  1. #pragma comment (lib,"tapi32,lib" )

 
 
au debut d'un de test headers.
ca effectue le linkage avec tapi32.lib au moment de la compil. C'est pratique pour ca :
 
 

Code :
  1. #ifdef OPTION_1
  2. #pragma comment (lib,"malibavecoption-1.lib" )
  3. #else
  4. #pragma comment (lib,"malibsansoption-1.lib" )
  5. #endif

n°422865
pilou51
Posté le 10-06-2003 à 16:12:26  profilanswer
 

mais ça revient au mm qu'en ajoutant la lib ds les projet settings (à part si on a des #ifdef, je suis bien d'accord :))...
bref plouf, la lib est bien chargée, mais ça suffit pas :(

n°422868
Joel F
Real men use unique_ptr
Posté le 10-06-2003 à 16:14:27  profilanswer
 

verifie que la lib existe et qu'elle est pas dans un rpeertoire tordue.

mood
Publicité
Posté le 10-06-2003 à 16:14:27  profilanswer
 

n°422879
pilou51
Posté le 10-06-2003 à 16:18:00  profilanswer
 

non non elle est avec toutes les autres, d'ailleurs il met un msg d'erreur si on essaie de charger une lib inexistante....
 
ouiiiiiinnn ça m'énerve... :cry:
 
mais merci d'essayer, c sympa :)

n°422883
Joel F
Real men use unique_ptr
Posté le 10-06-2003 à 16:19:13  profilanswer
 

Tu as bein sur ajouter la lib dans les DEUX versions des settings release ET Debug.
Paske si tu l'a mis dans debug et que tu compile en release ...

n°422890
pilou51
Posté le 10-06-2003 à 16:21:57  profilanswer
 

vivi...
d'ailleurs si j'enlève la lib, j'ai 6 erreurs de link au lieu de 4...

n°422970
VisualC++
J'va y penser ...
Posté le 10-06-2003 à 17:33:52  profilanswer
 

Euh les erreurs de link les 2 premieres ca a rien avoir avec des fonctions propre a tapi32.lib mais c ds ton code.

n°423403
pilou51
Posté le 11-06-2003 à 08:37:49  profilanswer
 

Et tu pourrais me dire de quel genre d'erreur il peut s'agir ds le code ? Comme dit plus haut, je l'ai récupéré, et je peux pas tout copier/coller ici parceque c plutot long... Mais si tu pouvais m'en dire plus sur le genre de faute qui peut provoquer ça... je t'en serais infiniment reconnaissant :)

n°423471
VisualC++
J'va y penser ...
Posté le 11-06-2003 à 09:38:15  profilanswer
 

Ben la les 2 fonctions qui link pas c a vue de nez les 2 callback que tu peux passer a TAPI pour les notifications.
 
Hors tu les as (enfin le soft) integrees a une classe, mais pour faire soit faut qu elles soit declarees en static.
 
Enfin ca peut venir de la sans le code dur

n°423527
pilou51
Posté le 11-06-2003 à 10:52:33  profilanswer
 

Elles sont en static justement, j'ai essayé de l'enlever et ça rajoute effectivement des erreurs.....
Bon voilà le bout de code de définition de ces méthodes :  

Code :
  1. class CTapiConnection
  2. {
  3. protected:
  4.     // This area contains the protected members of the CTapiConnection class.
  5.     DWORD m_dwNumDevs;      // the number of line devices available
  6.     DWORD m_dwDeviceID;     // the line device ID
  7.     DWORD m_dwRequestedID;
  8.     LONG m_lAsyncReply;
  9.     // BOOLEANS to handle reentrancy.
  10.     BOOL m_bShuttingDown;
  11.     BOOL m_bStoppingCall;
  12.     BOOL m_bInitializing;
  13.     BOOL m_bReplyReceived;
  14.     BOOL m_bTapiInUse;     // whether TAPI is in use or not
  15.     BOOL m_bInitialized;   // whether TAPI has been initialized
  16. public:
  17.     // This area contains the public members of the CTapiConnection class.
  18.     HLINEAPP m_hLineApp;       // the usage handle of this application for TAPI
  19.     HCALL m_hCall;             // handle to the call
  20.     HLINE m_hLine;             // handle to the open line
  21.     DWORD m_dwAPIVersion;      // the API version
  22.     char m_szPhoneNumber[64];  // the phone number to call
  23. protected:
  24.     // Here is where I put the protected (internal) functions.
  25. BOOL ShutdownTAPI();
  26.     BOOL HandleLineErr(long lLineErr);
  27.     LPLINEDEVCAPS GetDeviceLine(DWORD *dwAPIVersion,
  28.         LPLINEDEVCAPS lpLineDevCaps);
  29.     LPLINEDEVCAPS MylineGetDevCaps(LPLINEDEVCAPS lpLineDevCaps,
  30.         DWORD dwDeviceID, DWORD dwAPIVersion);
  31.     LPVOID CheckAndReAllocBuffer(LPVOID lpBuffer, size_t sizeBufferMinimum);
  32.     LPLINEADDRESSCAPS MylineGetAddressCaps (LPLINEADDRESSCAPS lpLineAddressCaps,
  33.         DWORD dwDeviceID, DWORD dwAddressID, DWORD dwAPIVersion,
  34.         DWORD dwExtVersion);
  35.     BOOL MakeTheCall(LPLINEDEVCAPS lpLineDevCaps,LPCSTR lpszAddress);
  36.     LPLINECALLPARAMS CreateCallParams (LPLINECALLPARAMS lpCallParams,
  37.         LPCSTR lpszDisplayableAddress);
  38.     long WaitForReply (long lRequestID);
  39.     void HandleLineCallState(DWORD dwDevice, DWORD dwMessage,
  40.         DWORD dwCallbackInstance,
  41.         DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);
  42. private:
  43.    // This section is for private functions.
  44. public:
  45.     // Public functions.
  46.     CTapiConnection();
  47.     ~CTapiConnection();
  48.     BOOL Create(char *szPhoneNumber = NULL);
  49.     BOOL DialCall(char *szPhoneNumber = NULL);
  50.     BOOL HangupCall();
  51.     static void CALLBACK lineCallbackFunc(
  52.         DWORD dwDevice, DWORD dwMsg, DWORD dwCallbackInstance,
  53.         DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);
  54. };


 
Quand je vire leurs appels ultérieurs, je n'ai plus d'erreur de link.....

n°423673
gatorette
Posté le 11-06-2003 à 12:18:55  profilanswer
 

Voici quelques hypothèses :
 

Code :
  1. --------------------Configuration: TAPIConsole - Win32 Debug--------------------
  2. Compiling...
  3. main.cpp
  4. Linking...
  5. LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library // cela indique que tu utilises la bibliothèque C MultiThreaded et que dans une autre bibliothèque (Tapi32.lib ?), c'est une autre bibliothèque C (Single threaded, debug...) qui est utilisée.
  6. main.obj : error LNK2001: unresolved external symbol "protected: int __thiscall CTapiConnection::HandleLineErr(long)" (?HandleLineErr@CTapiConnection@@IAEHJ@Z) // il trouve pas ta fonction... Tu es sûr de l'avoir implémentée et d'avoir ajouté le fichier .c ou .cpp la contenant au projet ?
  7. main.obj : error LNK2001: unresolved external symbol "public: static void __stdcall CTapiConnection::lineCallbackFunc(unsigned long,unsigned long,unsigned long,unsigned long,unsigned long,unsigned long)" (?lineCallbackFunc@CTapiConnection@@SGXKKKKKK
  8. @Z) // même erreur qu'au dessus
  9. libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main // la bibliothèque C que tu utilise a besoin de la fonction _main et ne la trouve pas. Ca ressemble aux erreurs que tu as quand tu compiles un projet utilisant la bibliothèque C en ayant défini ATL_MIN_CRT dans les options du projet.
  10. Debug/TAPIConsole.exe : fatal error LNK1120: 3 unresolved externals
  11. Error executing link.exe.
  12. TAPIConsole.exe - 4 error(s), 1 warning(s)



---------------
each day I don't die is cheating

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  TAPI et erreur de linkage

 

Sujets relatifs
[PHP, Apache] Erreur délai de 30s et chemin réseauerreur sur ce code mais ou est-elle ?
erreur de segmentationCommande avec 2 parametres : ERREUR ----------- RESOLU
[open gl] une erreur bizarre sous dev cppune erreur bete perdu dans 5 lignes de code
encore une erreur a la con[MFC VC++6] Erreur de link... [résolu]
d'ou peut venir cette erreur?Mysql table crashé erreur 138
Plus de sujets relatifs à : TAPI et erreur de linkage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR