Symbole externe non résolu

Résolu
Nsjn Messages postés 5 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 5 avril 2009 - 3 avril 2009 à 18:24
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 5 avril 2009 à 11:37
Bonjour à tous,

Je tente de créer la dll erthlib.dll à partir du fichier earth.idl sous C++ ( Visual 8 ).
Tout se passe correctement jusqu'à l'edition de liens qui me donne 8 erreurs LNK 2001 pour des fonctions appartenant à rpcproxy.h apparement, et dont voici la liste :
1>EARTH_p.obj : error LNK2001: symbole externe non résolu _CStdStubBuffer2_Release@4

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _NdrStubCall2@16

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _NdrStubForwardingFunction@16

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _IUnknown_Release_Proxy@4

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _IUnknown_AddRef_Proxy@4

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _IUnknown_QueryInterface_Proxy@12

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _NdrOleFree@4

1>EARTH_p.obj : error LNK2001: symbole externe non résolu _NdrOleAllocate@4

1>C:\JNS\GE8\Debug\GE8.dll : fatal error LNK1120: 8 externes non résolus

Quelqu'un saurait il m'en expliquer la raison ? peut être même proposer une solution ?
Dans tous les cas, merci de vos réponses,
nsjn

8 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
3 avril 2009 à 18:52
t'as pas référencé la librairie correspondante : ajoute ceci dans un fichier de code (.c/.cpp/...)

#pragma comment(lib,"RpcRT4.lib")

ça devrait aller mieux
3
Nsjn Messages postés 5 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 5 avril 2009
4 avril 2009 à 08:13
Hello,
Merci à juju12. Effectivement cela va nettement mieux comme ça. Au risque d'être casse bonbon...il en reste un de non referencé ! A savoir :
symbole externe non résolu _CStdStubBuffer2_Release@4

Il me semble pourtant que cette fonction appartient à la même librairie. Mais je dois avoir tort. Je vais creuser, mais si tu as une idée..
Merci encore et désolé pour mon retard à répondre, j'étais de sortie hier soir !!
Bye
nsjn
Carpe Diem
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
4 avril 2009 à 14:29
J'ai pas trouvé ce truc-là...on dirait une dérivée de CStdStubBuffer
Peux-tu vérifier si ça vient effectivement de RpcRT (regarde dans le .h)? Sinon, quelle provenance?
0
Nsjn Messages postés 5 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 5 avril 2009
4 avril 2009 à 14:51
Hello,
Effectivement, je trouve ce bidule dans rpcproxy.h, dans un paragraphe marqué New Function dont voici un extrait. Ce que je ne comprends pas, c'est la raison pour laquelle ceci n'est pas vu par le pragma que tu m'as conseillé de rajouter. J'ajouterai que ces fichiers .h sont extremement récent, je les ai télécharger il y a une dizaine de jours. Quand ceci tournera, tu auras table ouverte à Lyon. Bye et merci encore.


//Delegation support.




#define




STUB_FORWARDING_FUNCTION NdrStubForwardingFunctionULONG STDMETHODCALLTYPE

CStdStubBuffer2_Release(IRpcStubBuffer *This);

ULONG STDMETHODCALLTYPE

NdrCStdStubBuffer2_Release(IRpcStubBuffer *This,IPSFactoryBuffer * pPSF);




#define




CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0



/*************************************************************************


End of new functions.


*************************************************************************/


// PROXY_CLSID has precedence over PROXY_CLSID_IS
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
4 avril 2009 à 19:31
Aïe...
La raison elle est simple, c'est que c'est pas une fonction importée... en fait juste une définition...
Bon, j'avoue, je sais pas du tout quoi faire là...
Voici un article (vieux, je sais pas si les infos sont encore valables) qui t'aidera je l'espère :
http://support.microsoft.com/kb/164149/en-us
0
Nsjn Messages postés 5 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 5 avril 2009
4 avril 2009 à 19:48
Hello,
Merci pour tout. Je vais regarder cela demain matin et ne manquerai pas de te tenir au courant. Selon le temps qu'il me faudra, je t'avertirai peut être un peu plus tard, car je pars demain soir ( je suis routier, gros camion, vroum,vroum...)
Merci encore et à très prochainement.
nsjn
0
Nsjn Messages postés 5 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 5 avril 2009
5 avril 2009 à 08:33
Hello,


eureka peut être. J'ai pu générer la dll sans erreur. En fait j'ai forcé C++ à travailler sans utiliser le stdafx.h et à traiter le code comme étant du C.


Cette idée m'est venue en considérant le code généré par MIDL, à savoir du h et du C classique.
Toutefois la directive que tu m'as indiquée reste essentielle au niveau du fichier earth_p.c
Bien, maintenant il  me reste à inclure ceci dans une grosse app en C V6. Encore quelque moment interressant en perspective.
En tous cas merci de ton aide et petit rappel : si tu passes à Lyon, table ouverte.
Bon week end
nsjn
Carpe Diem
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
5 avril 2009 à 11:37
Bien joué. Bonne continuation, et bon voyage!
0