Delphi를 처음 사용합니다.Delphi에서 포인터로 DLL 호출
bool __stdcall MyFunction(char * name, int * index)
C++에서이 DLL 함수를 호출이 코드는 완벽하게 작동합니다 : 난에서 다음 내 보낸 된 함수가있는 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;
당신은 어떤 언어로 빌드 되었습니까? –
C 코드가 'void'함수를 호출하고 있지만 델파이 코드가 bool을 반환하는 함수를 호출합니다 ...? – Roddy
@Roddy 함수를 호출하는 C 코드의 문제이지만이 코드 중 아무 것도 반환 값이없는 것 때문에 –