Desenvolupar una DLL en VisualC++

compatible en VisualBasic

per Jordi Binefa

http://www.binefa.net

 

 

Crear un nou projecte MFC AppWizard(dll) :

 

 

Escollir una DLL normal compartida MFC DLL :

 

 

L’espai de treball tindrà aquest aspecte :

 

 

Afegeix una nova classe genèrica (myNewClass) :

 

 

Afegeix una nova funció membre a la nova classe (double myNewClass::triple(double num)) :

 

 

Escriu un codi a la nova funció :

 

double myNewClass::triple(double num)

{

return 3*num;

}

 

Selecciona l’arxiu cpp (pciStyle0Z.cpp) :

 

Afegeix l’arxiu de capçalera de la nova classe al principi de  pciStyle0Z.cpp (just a sota del #endif):

 

#include “myNewClass.h”

 

Afegeix al final de  pciStyle0Z.cpp:

 

myNewClass nc;

 

extern "C" double PASCAL EXPORT byThree(double num)

{

            AFX_MANAGE_STATE(AfxGetStaticModuleState());

 

            return nc.triple(num);

}

 

            S’ha declarat un nou objecte nc que pertany a la classe myNewClass. La funció byThree(double num) retorna un double i llur funció externa és compatible per qualsevol entorn de programació (com VisualBasic o VisualC++).

 

            Per cridar la funció de la DLL des de VisualBasic :

 

Private Declare Function byThree Lib "pciStyle0Z.dll" (ByVal n As Double) As Double

 

Private Sub Command1_Click()

Dim numero As Double

Dim i As Double

 

numero = 15

 

i = byThree(numero)

 

MsgBox "El triple de " & numero & " és " & i & "."

 

End Sub