creation de dll

Le
Stealth
Bonjour,

Je cherche actuellement à créer une dll, celle ci contient une méthod=
e
"test" qui sera appelée par mon programme. Le problème est que la
méthode "test" fait elle même appelle à une méthode "Func" contenue
dans mon programme.

func.h :

#pragma once
#include "stdafx.h"
#include <iostream>

extern "C"
{
__declspec(dllexport)int Func(const std::string &, const
std::string);
};

test.cpp :

#pragma once
#include <iostream>
#include "func.h"

void test(std::string str1, std::string str2)
}
int i = Func(str1, str2);
}

Visual Studio me dit que le symbole externe non résolu _Func n'est pas
référencé dans la fonction test

Merci d'avance,
Stealth
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
marc
Le #20314251
On 8 oct, 11:50, Stealth
//..
void  test(std::string str1, std::string str2)}

  int i = Func(str1, str2);

}

Visual Studio me dit que le symbole externe non résolu _Func n'est pas
référencé dans la fonction test




C'est normal, il n'y a pas le corps de la fonction Func().
Stealth
Le #20314451
On 8 oct, 13:19, marc
C'est normal, il n'y a pas le corps de la fonction Func().



C'est normal la fonction func se trouve dans mon programme, j'y fait
appel depuis ma dll (depuis "test")
Stealth
Le #20314441
On 8 oct, 13:19, marc
On 8 oct, 11:50, Stealth
> //..
> void  test(std::string str1, std::string str2)}

>   int i = Func(str1, str2);

> }

> Visual Studio me dit que le symbole externe non résolu _Func n'est pa s
> référencé dans la fonction test

C'est normal, il n'y a pas le corps de la fonction Func().



La fonction Func se trouve dans mon programme et je veux y faire appel
depuis ma dll (depuis "test")
Senhon
Le #20314591
"Stealth" discussion :

On 8 oct, 13:19, marc
On 8 oct, 11:50, Stealth
> //..
> void test(std::string str1, std::string str2)}

> int i = Func(str1, str2);

> }

> Visual Studio me dit que le symbole externe non résolu _Func n'est pas
> référencé dans la fonction test

C'est normal, il n'y a pas le corps de la fonction Func().



La fonction Func se trouve dans mon programme et je veux y faire appel
depuis ma dll (depuis "test")



Ce n'est pas possible, comme cela est posé.

Le compilateur est un outil qui a besoin de l'adresse de la fonction Func.
Comme celle-ci lors de la compilation n'est pas connue, il ne sait pas
comment faire.

Il faut de tu utilises à la place un pointeur de fonction.
Ce pointeur devra est initialisé avec la bonne valeur avant de pouvoir
l'utiliser dans ta DLL.
marc
Le #20314821
On 8 oct, 13:49, Stealth
On 8 oct, 13:19, marc
> C'est normal, il n'y a pas le corps de la fonction Func().

C'est normal la fonction func se trouve dans mon programme, j'y fait
appel depuis ma dll (depuis "test")



Comme a dit Senhon en-dessous, il faut passer par un pointeur de
fonction
Bertrand Lenoir-Welter
Le #20315721
Ceci dit, une DLL qui a besoin d'une fonction présente dans le programme
appelant, ça ressemble quand même un peu à une architecture en forme de
plat de spaghettis. Si la DLL est partagée par plusieurs programmes,
elle fait comment ?
Publicité
Poster une réponse
Anonyme