Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

creation de dll

6 réponses
Avatar
Stealth
Bonjour,

Je cherche actuellement =E0 cr=E9er une dll, celle ci contient une m=E9thod=
e
"test" qui sera appel=E9e par mon programme. Le probl=E8me est que la
m=E9thode "test" fait elle m=EAme appelle =E0 une m=E9thode "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 =3D Func(str1, str2);
}

Visual Studio me dit que le symbole externe non r=E9solu _Func n'est pas
r=E9f=E9renc=E9 dans la fonction test

Merci d'avance,
Stealth

6 réponses

Avatar
marc
On 8 oct, 11:50, Stealth wrote:
//..
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().
Avatar
Stealth
On 8 oct, 13:19, marc wrote:
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")
Avatar
Stealth
On 8 oct, 13:19, marc wrote:
On 8 oct, 11:50, Stealth wrote:

> //..
> 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")
Avatar
Senhon
"Stealth" a écrit dans le message de groupe de
discussion :

On 8 oct, 13:19, marc wrote:
On 8 oct, 11:50, Stealth wrote:

> //..
> 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.
Avatar
marc
On 8 oct, 13:49, Stealth wrote:
On 8 oct, 13:19, marc wrote:

> 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
Avatar
Bertrand Lenoir-Welter
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 ?