Rechercher : dans
Par :

Utiliser une classe d'une .DLL, pb de linker

Dernière réponse le 27 nov 2007 à 22:25:08 Sivaller, le 27 nov 2007 à 18:47:15 
 Signaler ce message aux modérateurs

Bonjour,

J'essaye d'utiliser une classe d'une library avec seulement Loadlibrary.

Le compilo me jette avec l'erreur suivante :
useclass error LNK2019: symbole externe non résolu "__declspec(dllimport) public: void __thiscall Ctestdll::putstr(char *)" (__imp_?putstr@Ctestdll@@QAEXPAD@Z) référencé dans la fonction _main


Le lien de ma source :

http://pagesperso-orange.fr/sivaller/shareclass.zip

Merci ;

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Utiliser une classe d'une .DLL, pb de linker » dans :
[Windows] Nettoyage des DLL chargées en mémoire VoirLe système d'exploitation Windows conserve les librairies (DLL) récemment utilisées en mémoire, afin de potentiellement accélérer le démarrage des applications au prochain lancement. Néanmoins ces librairies consomment de l'espace mémoire. Ainsi,...
Télécharger Classic Menu for Office 2007 VoirClassic Menu for Office 2007 est un logiciel qui vous permet de travailler et d’utiliser les menus et les barres d’outils de Microsoft Office 2003 dans Microsoft Office 2007. Avec ce logiciel, Vous pouvez apprendre l'ensemble des suites...
PHP - Les classes VoirLa notion de classe Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données et des fonctions au sein d'une structure et rendant la...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Les directives de Java Server Pages (JSP) VoirPrésentation des directives JSP Les directives JSP sont des instructions insérées dans des tags HTML spéciaux. La syntaxe des directives JSP est la suivante : Les directives JSP permettent d'indiquer : le...

1

kilian, le 27 nov 2007 à 20:08:07

Non, en fait je ne crois que c'est durant l'import de ta fonction que ça ne va pas.
C'est le fait que tu as défini cette classe:

class  Ctestdll {

public:

	Ctestdll(void);

	virtual void  putstr(char *sy);;

	char *s;

	// TODO : ajoutez ici vos méthodes.

};


Plus loin tu fais:
class Ctestdll2 : Ctestdll{

public:

	  void putstr(char *sy);

	// TODO : ajoutez ici vos méthodes.

};

void  Ctestdll2::putstr(char *sy)

{

	printf("héhé");

	Ctestdll::putstr(sy);

}

Tu appelles la méthode Ctestdll::putstr dans Ctestdll2::putstr
Le soucis c'est que Ctestdll::putstr n'est implémentée nulle part, on a juste son interface mais pas son contenu.

De deux choses l'une:
_ Soit tu donnes un implémentation à cette méthode
_ Soit tu la déclares virtuelle pure (virtual void putstr(char *sy) = 0;) et tu n'appelles pas cette méthode. Ca signifie que les enfants de Ctestdll seront obligés d'implémenter cette fonction comme tu le fais avec Ctestdll2 mais que Ctestdll ne sera pas instanciable et que tu ne pourras pas appeler sa fonction putstr.

Répondre à kilian

2

Sivaller, le 27 nov 2007 à 22:21:04

Virtual void putstr(char *sy)=0; marche pas, donne la même chose :
useclass error LNK2019: symbole externe non résolu "public: virtual void __thiscall Ctestdll::putstr(char *)" (?putstr@Ctestdll@@UAEXPAD@Z) référencé dans la fonction "public: virtual void __thiscall Ctestdll2::putstr(char *)" (?putstr@Ctestdll2@@UAEXPAD@Z)

voilà

Répondre à Sivaller

3

 kilian, le 27 nov 2007 à 22:25:08

void  Ctestdll2::putstr(char *sy)

{

	printf("héhé");
=>Il faut aussi supprimer cette ligne:	Ctestdll::putstr(sy);

}

Répondre à kilian
Collection CommentÇaMarche.net