У меня есть 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
, если это юникод, используйтеprocedure xMain(MSG:PChar);export;
иMessageBox
. Также укажите свое соглашение о вызовах в экспорте (например, stdcall), я не знаю, как бы вы это сделали на стороне FASM. - person Sertac Akyuz   schedule 23.10.2012