我是Delphi新手。我有一个在它下面的导出函数的DLL:在Delphi中使用指针调用DLL
bool __stdcall MyFunction(char * name, int * index)
这个代码在C++中调用该DLL功能完美的作品:
typedef void (WINAPI * MyFunction_t)(char *, int *);
void main()
{
HMODULE mydll = LoadLibrary(L"C:\\mydll.dll");
MyFunction_t MyFunction = (MyFunction_t)GetProcAddress(mydll, "MyFunction");
int index = 0;
MyFunction("MyString", &index);
}
我需要做相同的德尔福。这里是我的代码,它不工作(MyFunction被调用,但索引变量没有收到适当的值)。这是代码摘录,请忽略混乱。任何输入将不胜感激!
type
TMyFunction= function(name: PChar; var index_ptr: Integer): Boolean; stdcall;
var
fMyFunction : TMyFunction;
i : Integer;
h: THandle;
begin
Result := 0;
h := LoadLibrary('c:\\mydll.dll');
fMyFunction := GetProcAddress(h, 'MyFunction');
if @fMyFunction <> nil then
begin
fMyFunction('MyString', i);
Result := i;
end;
FreeLibrary(h);
end;
你用什么语言构建的? – 2011-01-25 20:17:59
你的C代码调用了'void'函数,但是Delphi代码调用了一个函数返回一个bool ...? – Roddy 2011-01-25 20:23:41
@Roddy这是调用函数的C代码中的一个问题,但它看起来是良性的,因为没有任何代码对返回值进行任何操作 – 2011-01-25 21:00:37