Utiliser une dll pb en C

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Utiliser une dll pb en C

Message par microdevweb »

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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Utiliser une dll pb en C

Message par threedslider »

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.
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Utiliser une dll pb en C

Message par Fred »

Si ca marche parfaitement, une DLL est independante du language utilisé pour la créer.
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Utiliser une dll pb en C

Message par threedslider »

Ok je confirme ce que Fred a dit, j'ai fait une erreur de ma part :oops:

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
Ensuite pour faire tester sur Visual C que tu pourra le faire (moi j'utilise CPP donc C++), le code ici :

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;
}
Voilà j'espère que cela t'aidera beaucoup :mrgreen:

PS: n'oublie pas de copier la dll dans le programme crée par Visual Studio :wink:
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Utiliser une dll pb en C

Message par microdevweb »

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é) :roll:

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. :P
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre