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

Tags:    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;
}

Jeg benytter det samme framework på både udviklingsmaskinen og på den maskine, der skal benytte DLL'en. Det er .NET v1.1.4322.

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

/mikl-dk



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Funktionen skulle bare laves static, og så kan man også bruge string i stedet for char* :-)



Hej,

Jeg mener ikke du kan lave char* direkte i interface til C# program..
Du skal først lave en wrapper klasse i C++/Cli som kører mixed mode..
Denne kan så bruges af et C# program..

/Søren



t