Avatar billede mikl-dk Nybegynder
19. juli 2006 - 10:31 Der er 1 kommentar og
1 løsning

char* som parameter i C# kontra C/C++

Hej,

Jeg sidder og arbejder med at lave en DLL i C#. Jeg har fået lavet et entrypoint i den jvf. http://www.c-sharpcorner.com/Code/2003/Aug/ExportManagedCodeasUnmanaged.asp, men jeg har problemer med at den ikke bliver kaldt ordentligt. Den eksterne applikation kan dog sagtens finde entrypointet, så det er ikke her, problemet ligger.

I C++ fungerer den fint ved at eksempelvis at eksportere følgende funktion (prototypen er det vigtige):
extern "C" int PASCAL EXPORT USER_ADD (char * input_XML, char ** return_XML, int * return_XML_length)
{
    return 0;
}

Jeg kan aflæse input_XML og eksempelvis skrive indeholdet til en fil osv. Altså fungerer den helt ok i C++ - problemet er når jeg gerne vil lave det samme i C#.

Hvis jeg laver følgende funktion i C#, bliver det kastet en uhåndteret undtagelse:
public unsafe int USER_ADD(char* _inputXML, char** _returnXML, int* _returnXMLLength)
{
    return 0;
}

Er der nogle, der har nogle gode tips til dette - ret så irriterende - problem :-)?

/mikl-dk
Avatar billede mikl-dk Nybegynder
19. juli 2006 - 10:34 #1
Jeg benytter det samme framework på både udviklingsmaskinen og på den maskine, der skal benytte DLL'en. Det er .NET v1.1.4322.
Avatar billede mikl-dk Nybegynder
19. juli 2006 - 15:34 #2
Funktionen skulle bare laves static, og så kan man også bruge string i stedet for char* :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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