RPC

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
Post Reply
User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

RPC

Post by Zanetti » 08 Apr 2008, 22:31

Salutare,

am o nelamurire cu privire la RPC (Remote Procedure Call ) . Am reusit sa apelez (intr-un final) o functie de pe o alta masina. Este o functie care iti afiseaza un mesaj - AfxMessageBox.

In definirea interfetei, din fisierul IDL, am definit functia in felul urmator:

Code: Select all

interface interfA 
{ 
void HelloProc([in, string] unsigned char * pszString); 
void Shutdown(void); 
} 
in felul acesta e OK. Dar daca parametrul functie HelloProc il declar de tipul CString, la crearea stub-urilor (cu ajutorul compl. MIDL) imi da urmatoarea eroare:

expecting a type specification near "CString" :?: :cry: Din cate observ, in IDL nu poti declara variabile decat de tipurile de baza - int, char. Asta e chiar nasol rau de tot.

Nu vreau neaparat sa am ca si parametru un obiect de tipul CString.... in aplicatia mea folosesc alt tip, dar vreau mai intai sa stiu daca exista vreo metoda prin care sa ii pot pasa acelei functii orice parametru vrea muschii mei.

Cei care ati mai lucrat cu RPC, dati o mana de ajutor. Multumesc!


Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: RPC

Post by neagu_laurentiu » 09 Apr 2008, 18:10

sa ii pot pasa acelei functii orice parametru
COM-ul are tipurile sale, mai mult sau mai putin echivalente cu cele ale altor limbaje.
IDL-ul nu e specific C++ sau altor limbaje, ci e un limbaj independent si e destinat a comunica cu celelalte limbaje/tehnologii. De aceea in fiecare limbaj gasesti echivalenta tipurilor cu cea ale COM/IDL-ului.
Asa ca poti pasa spre functiile unui obiect COM orice tip dar nu neaparat in forma limbajului in care dezvolti (C++ in cazul tau). BSTR e specific IDL-ului in lucrul cu siruri. Vezi ca gasesti in VC++ functii de trasformare a sirurilor in BSTR.

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: RPC

Post by neagu_laurentiu » 09 Apr 2008, 18:48

in IDL nu poti declara variabile decat de tipurile de baza - int, char. Asta e chiar nasol rau de tot.
Ce te faci cand tu pasezi ca parametru CString sau altceva specific iar la capatul celalalt primeste un VBasic, VFoxPro sau altcineva decat C++... cum vor intelege acestea CString ?!

User avatar
Zanetti
Membru
Membru
Posts: 80
Joined: 20 Jul 2007, 08:57
Location: Tg.Mures

Re: RPC

Post by Zanetti » 09 Apr 2008, 23:23

Urmatoarele tipuri de date sunt suportate in IDL:

Base type Description
boolean A data item that can have the value TRUE or FALSE.
byte An 8-bit data item guaranteed to be transmitted without any change.
char An 8-bit unsigned character data item.
double A 64-bit floating-point number.
float A 32-bit floating-point number.
handle_t A primitive handle that can be used for RPC binding or data serializing.
hyper A 64-bit integer that can be declared as either signed or unsigned Can also be referred to as _int64.
int A 32-bit integer that can be declared as either signed or unsigned.
__int3264 A keyword that specifies an integral type that has either 32-bit or 64-bit properties.
long A modifier for int that indicates a 32-bit integer. Can be declared as either signed or unsigned.
short A 16-bit integer that can be declared as either signed or unsigned.
small A modifier for int that indicates an 8-bit integer. Can be declared as either signed or unsigned.
wchar_t Wide-character type that is supported as a Microsoft® extension to IDL. Therefore, this type is not available if you compile using the /osf switch.

Voi incerca sa ma folosesc de RPC, chiar daca suporta numai aceste tipuri de date.
Ai fost facut DE Dumnezeu si PENTRU Dumnezeu - si pana vei intelege asta,viata ta nu va avea sens.

nmg
Junior
Junior
Posts: 43
Joined: 12 Jul 2007, 07:36

Re: RPC

Post by nmg » 11 Apr 2008, 09:03

Eu zic ca sunt suficiente tipuri ca sa transmiti orice fel de date "vrea muschii tai". Atentie, am zis date, nu parametri.

Post Reply