Имам dll, кодиран в Delphi XE2 със следния код:
procedure xMain(MSG:String);export;
begin
MessageBox(0,PWideChar(MSG),'Title',0);
end;
exports xMain;
Сега импортирам тази функция в приложение FASM така:
library dllfile, "testdll.dll"
import dllfile,\
xMain, "xMain"
И използването е така:
section ".data" data readable writeable
szMSG db "Message from FASM application!",0
section ".code" code readable executable
invoke xMain,szMSG
Но полученото поле за съобщения се появява с изкривени знаци, както следва:
Това е точният резултат от извикването на функцията.
Как да реша този проблем?
procedure xMain(MSG:PAnsiChar);export;
иMessageBoxA
, ако е unicode, използвайтеprocedure xMain(MSG:PChar);export;
иMessageBox
. Също така посочете вашата конвенция за повикване в експорта (f.i. stdcall), не знам как бихте направили това от страна на FASM. - person Sertac Akyuz   schedule 23.10.2012