Bonjour a tous,
Cela fait longtemps que je n'ai rien posté. Quelqu'un, a-t-il déjà essayé d'utiliser une dll PB avec Visual studio en C.
Merci
Utiliser une dll pb en C
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Utiliser une dll pb en C
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
- threedslider
- Messages : 452
- Inscription : dim. 01/juil./2018 22:38
Re: Utiliser une dll pb en C
Bonjour,
C'est faisable mais marche pas à cause l'interne des variables PB qui sont pas compatibles avec C. A moins que sur Backend C c'est possible mais faut tester cela.
C'est faisable mais marche pas à cause l'interne des variables PB qui sont pas compatibles avec C. A moins que sur Backend C c'est possible mais faut tester cela.
Re: Utiliser une dll pb en C
Si ca marche parfaitement, une DLL est independante du language utilisé pour la créer.
- threedslider
- Messages : 452
- Inscription : dim. 01/juil./2018 22:38
Re: Utiliser une dll pb en C
Ok je confirme ce que Fred a dit, j'ai fait une erreur de ma part
pour tester faut faire sur PB de créer un dll avec l'option ShareDll, voici le code :
Ensuite pour faire tester sur Visual C que tu pourra le faire (moi j'utilise CPP donc C++), le code ici :
Voilà j'espère que cela t'aidera beaucoup
PS: n'oublie pas de copier la dll dans le programme crée par Visual Studio

pour tester faut faire sur PB de créer un dll avec l'option ShareDll, voici le code :
Code : Tout sélectionner
ProcedureDLL.i MyFunctionADD(num1.i, num2.i)
Print(Str(num1+num2))
ProcedureReturn num1 + num2
EndProcedure
Code : Tout sélectionner
#include <Windows.h>
#include <iostream>
typedef int(__cdecl* MYPROC)(int num1, int num2);
int main()
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
hinstLib = LoadLibrary(TEXT("MyTestDll.dll"));
if (hinstLib != NULL)
{
ProcAdd = (MYPROC)GetProcAddress(hinstLib, "MyFunctionADD");
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
std::cout << (ProcAdd)(150, 2000);
}
FreeLibrary(hinstLib);
}
return 0;
}

PS: n'oublie pas de copier la dll dans le programme crée par Visual Studio

- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Utiliser une dll pb en C
Bonjour à tous,
Merci pour vos réponses qui vont certainement m'être utiles. J'avoue que j'avais essayé avec un fichier include.h comme pour une dll écrite en c, ce qui n'avait pas fonctionné. Je vais un peu fouiller de ce côté. Et publierais un code si cela fonctionne.
Remarque : C'est un projet de détection de métaux sur tapis roulant par XRF. (donc je me doute que une dll écrite en pb a peu de change d'être accepté)
Cependant, je me suis créé un petit programme en Pb qui simule 10 STM32 dual core (qui vont envoyer les données lues par le convertisseur anagogique digital vue TCP ip et cela fonctionne parfaitement.
Merci pour vos réponses qui vont certainement m'être utiles. J'avoue que j'avais essayé avec un fichier include.h comme pour une dll écrite en c, ce qui n'avait pas fonctionné. Je vais un peu fouiller de ce côté. Et publierais un code si cela fonctionne.
Remarque : C'est un projet de détection de métaux sur tapis roulant par XRF. (donc je me doute que une dll écrite en pb a peu de change d'être accepté)

Cependant, je me suis créé un petit programme en Pb qui simule 10 STM32 dual core (qui vont envoyer les données lues par le convertisseur anagogique digital vue TCP ip et cela fonctionne parfaitement.

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège