- Home /
Error Calling DLL function
i want Call Dll in unity . But in unity call function SendData(1,2,3,4) not send 1,2,3,4 its send 86972112,2,1,1
What is my wrong Please Help me ? How can i fix this code ?
This is Lazarus function. I want call it from unity
Function SendData(MG,SG,LG,V:integer):integer;export;
var
s:string;
begin
fga:=mg;
sga:=sg;
faa:=(8*fga)+sg;
laa:=lg;
sval:=v;
s:='';
s:= s+ 'MG :'+inttostr(Mg)+#13;
s:= s+ 'SG :'+inttostr(sg)+#13;
s:= s+ 'LG :'+inttostr(lg)+#13;
s:= s+ 'V :'+inttostr(v)+#13;
MessageBox(0,PChar(s),PChar('Lazarus'),mb_ok);
end;
And This is C# in unity
using UnityEngine;
using System.Runtime.InteropServices;
using System.Collections;
using System;
class CallLazarDLL : MonoBehaviour {
[DllImport ("dllDeneme")]
private static extern byte Connect ();
[DllImport ("dllDeneme")]
private static extern byte Disconnect();
[DllImport ("dllDeneme")]
private static extern int SendData (int MG, int SG, int LG, int v);
[DllImport ("dllDeneme")]
private static extern byte GetData ();
public Light switchLight;
void Start(){
print ("Connect :"+ Connect());
}
void OnApplicationQuit(){
print ("Disconnect :" + Disconnect());
}
void OnMouseDown () {
switchLight.enabled = !switchLight.enabled;
if (switchLight == enabled){
print ("Group" + SendData(1,2,3,4));
}else{
print ("Group" + SendData(1,2,3,4));
}
}
void Update(){
print ("READ :"+GetData());
}
}
You're going to need to find out how Lazarus builds DLLs and find out if it uses the same calling convention as DLLs implemented in C/C++. See http://en.wikipedia.org/wiki/Calling_convention.
Answer by SerkanKK · Sep 24, 2012 at 06:49 PM
i was fixed the with stdcall conventions. its now work. Thank you.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Use Events or function or any best way ?? 1 Answer
Unity Messing up Basic Math? Projectile Trajectory Algorythm 1 Answer
Acessing Scripts in Assets folder using .dll 1 Answer
MySQL Funktionen Hilfe 1 Answer