Avatar billede ghorfraq Nybegynder
19. november 2003 - 09:16 Der er 5 kommentarer og
1 løsning

ATL Com programmering

jeg er ved at udarbejde et Com object i c++. Dette skal benyttes fra c# .NET og kalde en c-funktion.
Mit første udkast er som følgende:
HRESULT convertTimeToString(wchar_t dest, short dstSize, VARIANT time);

Jeg vil give en short (dstSize) og en unsigned long (time) med og have returneret en værdi (dest)

I objektet har en en værdi i form af en char temp[16]. Denne indeholder  8-bit unsigned char og skal returneres i funktionen. Hvordan gøres dette så det virker i .NET?
Skal jeg medgive [in] [out] parametre i metodeheaderen? OG hvordan håndters disse så i c# når jeg benytter objektet?
Avatar billede ghorfraq Nybegynder
19. november 2003 - 09:18 #1
skal lige siges at mit udkast ovenfor er idl-definitonen min c++ kode er som følgende indtil videre - Absolut ikke færdigt. Derfor dette spørgmål..

STDMETHODIMP CtimeToString::convertTimeToString(wchar_t dest, short dstSize, VARIANT time)
{
    // TODO: Add your implementation code here   
    short size = dstSize;
    unsigned long ltime = time.lVal;

    char result[16];

    DBL_Time_2_Str((DBL_U8 *)result, size, ltime);

    return S_OK;
}
Avatar billede ghorfraq Nybegynder
19. november 2003 - 09:19 #2
DBL_Time_2_Str bruger (DBL_U8 *)result som buffer, hvori resultatet bliver lagt, og det er denne værdi jeg skal have tilbage i c#
Det er som sagt en unsigned 8-bit char
Avatar billede cplus Nybegynder
28. november 2003 - 10:01 #3
Du har i .NET en COM wrapper hvor du kan kalde "unmanaged" code fra dit program.

Hvis du skal kalde COM objekter fra .NET kode skal du benytte en såkaldt RCW.. Runtime Class Wrapper..

Det den gør er at den laver en klasse til dig, som bunder i:

System.Runtime.InteropServices.TypelibConverter

Hvis du har arbejdet med Automation før kender du garanteret til TLB! Hvilket jeg læser du nok har.

Du kan klare det via Visual Studio.NET -> Add Reference --
eller via kommando værktøjet tlbimp hvis du har .NET frameworket kun.

Håber du kan bruge dette :)
Avatar billede ghorfraq Nybegynder
28. november 2003 - 10:04 #4
anede ikke dette spørgsmpl stadig stod pben *g*
Fint svar. Du får pointene
Avatar billede cplus Nybegynder
28. november 2003 - 10:08 #5
tak :)
Avatar billede ghorfraq Nybegynder
28. november 2003 - 10:09 #6
hmmmm
frygtelig Stavning :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester