C++ Dll mit AutoIt callen --> Return String bzw. Char

01/16/2011 10:59 Mr. Pancake-Trader#1
Sers Com,
Nicht Funktionierendes Beispiel:

AutoIt:
Code:
$string="h"
$Returned=DllCall("Dll-Test.dll","char:cdecl","string","char",$string)
MsgBox(0,"DLL-Test",$Returned)
C++ Dll:
Code:
extern "C" 
{
    std::string __declspec (dllexport) MyString (string a)
    {
        return a;
    }
}
Jetzt bekomme ich aber immer 0 zurück wenn ich mein AutoIt Skript ausführe, mit nem Integer/Double/Float etc. funktioniert alles wenn ich diese returne..

Funktionierendes Beispiel:

AutoIt:
Code:
$a=10
$b=5
$add=DllCall("DLLTutorial.dll","double:cdecl","add","double",$a, "double", $b)
MsgBox(0,"DLL-Test",$a&"+"&$b& " is:"&$add[0])
C++ Dll:
Code:
extern "C" double __declspec(dllexport) add (double a, double b)
{
    return a+b;
}
Vllt. könnte mir jemand sagen wie ich das schaffe einen String oder einen Char zurückzugeben?

Lg
01/19/2011 17:10 Mr. Pancake-Trader#2
Weis den niemand wie man sowas zurückgeben kann?

---> #Push# <---
01/19/2011 17:42 xNopex#3
Frage dich selber folgendes:
Zu std::string: Kann AutoIt mit einer Instanz einer C++ - Klasse umgehen?
Zu char*: Kann AutoIt mit einer Speicheradresse umgehen?
01/19/2011 18:25 Mr. Pancake-Trader#4
Stimmt, aber gibt es den keine Möglchkeit das AutoIt "beizubringen"? Weil ich möchte eig. nicht nen Char in seinen Ascii Code konvertieren und wieder zurück..

€: @xNopex, hattest du nicht mal ein andres Forum? Wos auch um C++ ging? oder verwechsel ich dich da?
01/21/2011 16:08 HardCore.1337#5
Code:
MsgBox(0,"DLL-Test",$Returned[0])
01/22/2011 11:05 Mr. Pancake-Trader#6
Code:
C:\Dokumente und Einstellungen\Administrator\Desktop\Dll Test.au3 (3) : ==> Subscript used with non-Array variable.:
Habe ich auch schon versucht :(
Das funktioniert nur wenn etwas zurückgegeben wird, nur bei nem String/Char als Rückgabewert funzt das net..
Bei nem Integer, Double usw. geht das natürlich, und es kommt kein Fehler.