Fórum Utilizar funções de DLL escitas em C #360427
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)