Utilizar funções de DLL escitas em C
27/06/2008
0
Olá amigos,
fiz uma dll no c++ desta forma:
e no delphi desta maneira:
Mas o resultado que obtenho é sempre estranho. Recebi este valor usando o código acima por exemplo: 5784649
Como posso receber o valor correto?
e como posso receber string?
Obrigado
fiz uma dll no c++ desta forma:
main.h #include <windows.h> ifdef PLUGIN_SOMA_EXPORTS define PLUGINSOMA_DLL __declspec(dllexport) else define PLUGINSOMA_DLL __declspec(dllimport) endif extern "C" { PLUGINSOMA_DLL int calc( int a, int b ); }
main.cpp include "main.h" BOOL APIENTRY DllMain( HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved ) { switch ( dwReasonForCall ) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } int calc( int a, int b ) { int valor; valor = (a + b); return (valor); }
e no delphi desta maneira:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; function calc(a: integer; b: integer):integer; external ´New.dll´; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var teste: integer; begin self.Caption := IntToStr(calc(50,100)); end; end.
Mas o resultado que obtenho é sempre estranho. Recebi este valor usando o código acima por exemplo: 5784649
Como posso receber o valor correto?
e como posso receber string?
Obrigado
Rodfernandes
Curtir tópico
+ 0
Responder
Posts
27/06/2008
Rodfernandes
Consegui!
Coloquei o [b:57ce32c978]stdcall[/b:57ce32c978] no Delphi, ficou assim:
Agora, gostaria de saber para que serve estas diretivas (como posso acessar estes defines pelo Delphi), mesmo retirando-as continua funcionando:
E como mando string?
Obrigado :D
Coloquei o [b:57ce32c978]stdcall[/b:57ce32c978] no Delphi, ficou assim:
function calc(a: integer; b: integer):integer; stdcall; external ´New.dll´;
Agora, gostaria de saber para que serve estas diretivas (como posso acessar estes defines pelo Delphi), mesmo retirando-as continua funcionando:
#ifdef PLUGIN_SOMA_EXPORTS define PLUGINSOMA_DLL __declspec(dllexport) else define PLUGINSOMA_DLL __declspec(dllimport) endif
E como mando string?
Obrigado :D
Responder
Clique aqui para fazer login e interagir na Comunidade :)