Estas de buenas:
Código:
#include <vcl.h>
#include <windows.h>
#include <string.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
return 1;
}
extern "C"
{ struct caso
{ char Ced[50];
int Lon;
};
void __declspec(dllexport) WINAPI LongitudCad(caso *Caso)
{ Caso->Lon=strlen(Caso->Ced);
}
}
este es el codigo de la DLL....y este es el codigo del cpp q la carga:
Código:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "string.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const char DLL_PRUEBA[13] = "Longitud.dll";
struct caso
{ char Ced[50];
int Lon;
};
void __stdcall (*F)(caso *);
//------------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{ caso Caso;
HINSTANCE Handle = LoadLibrary(DLL_PRUEBA);
if( Handle)
{ F=(void (__stdcall *)(caso *))GetProcAddress(Handle,"LongitudCad");
if(!F)
return;
strcpy(Caso.Ced,Edit1->Text.c_str());
F(&Caso);
ShowMessage("Longitud: "+IntToStr(Caso.Lon)+" caracteres.");
}
}
este el el .h:
Código:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TEdit *Edit1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif