Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Ubergabe von Strings an Win32C++Dll und umgekehrt !

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.01.2008, 13:48 Uhr
WindDancer1



Hi,

ich habe folgendes Problem, ich möchte aus VB eine C++ Dll aufrufen an die ich einen String übergebe, die Dll gibt mir dann einen anderen String zurück !
Einzeln funktioniert das auch, das heißt wenn die Dll aufgerufen wird und nur zurückgibt bzw. im anderen Szenario wenn VB übergibt und die Dll nichts zurückgibt.
Versuche ich aus VB eine Funktion der Dll aufzurufen und dieser einen String zu übergeben und die Dll Funktion einen Wert zurückgeben zu lassen funktioniert das nicht !

Hier der Code:
VB:


Visual Basic:
    Private Declare Function fnWin32DLL02 Lib "E:\WORKING\OMRON\GDT\EigeneDLL\C++ DLL mit VB (Test01)\Win32DLL02.dll" (ByVal testParam As String) As String

Private Sub Form_Load()

Dim x As String
Dim test As String

test = "Übergabe aus VB"
x = Space$(5)
x = fnWin32DLL02(test)
MsgBox "X ist: " & x

End Sub    



Dll.cpp:

C++:
    WIN32DLL02_API BSTR fnWin32DLL02(BSTR s)
{
BSTR x;

x = SysAllocString((BSTR)"abcde");
MessageBox(NULL,(LPCSTR)s,"Info",MB_OK);
SysFreeString(s);

return x;
}    



Dll.h:


C++:
WIN32DLL02_API BSTR fnWin32DLL02(BSTR);    


Das ist wie verhext, ich probier das schon seit Tagen und Google schweigt sich zu diesem Thema beharrlich aus !

Bin für jede Hilfe dankbar !
WindDancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.01.2008, 14:52 Uhr
xXx
Devil


Hmm ... du gibst den String frei(SysFreeString) und willst dann noch das was sinnvolles danach drin steht (return x)?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.01.2008, 15:09 Uhr
WindDancer1



Stimmt xXx,

danke das free ist draußen aber es funktioniert leider immer noch nicht !


Code:
WIN32DLL02_API BSTR fnWin32DLL02(LPCSTR s)
{
        BSTR x;

        x = SysAllocString((BSTR)"abcde");

         MessageBox(NULL,s,"Info",MB_OK);


        return x;
}




Gruß
WindDancer

Dieser Post wurde am 06.01.2008 um 15:09 Uhr von WindDancer1 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.01.2008, 15:39 Uhr
0xdeadbeef
Gott
(Operator)


Casten wandelt einen wide string nicht in einen ansi-string um, du kriegst lediglich kaputte Zeiger. Versuchs mal mit

C++:
MessageBoxW(NULL, s, L"Info", MB_OK);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: