2009-06-03 27 views
1

Entschuldigung für doppelte Buchung.Verschieben einer verknüpften Liste

Hallo

Ich habe Probleme aus einer DLL eine verknüpfte Liste Rangier.

------ C++ Struktur und Funktion --------

struct localeInfo { 
    WCHAR countryName[BUFFER_SIZE]; 
    WCHAR localeName[BUFFER_SIZE]; 
    localeInfo *next; 
} 

int GetSystemLocales(localeInfo **ppList); 

----------- C# Erklärungen -------- ---

Ich bekomme eine FatalExecutionEngine Exception bei deref2 Deklaration. Ich kann nicht herausfinden, wie man die verknüpfte Liste zurückbekommt und auf ihren Inhalt zugreift.

Hier ist der C++ Code, den ich geschrieben habe, um die verknüpfte Liste zu erhalten. Ich möchte etwas ähnliches in C# arbeiten.

localeInfo *pHead = NULL; 
localeInfo *pTemp; 
GetSystemLocales(&pHead); 

for(pTemp = pHead; pTemp!=NULL; pTemp = pTemp->next) 
{ 
     wprintf(L"Display Name : %s (%s) \n", pTemp->countryName, pTemp->localeName); 
} 

Antwort

1

versuchen Sie dies:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] 
private struct LocaleInfo { 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = BUFFER_SIZE)] 
    public string countryName; 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = BUFFER_SIZE)] 
    public string localeName; 
    public IntPtr next; 
}; 
1

ich auf Ihre andere Frage in dieser Richtung beantwortet. Shays struct Definition ist ein Teil davon, aber ich habe Main auch korrigiert.

Sie sollten die andere Frage wirklich schließen - ich bemerkte nur durch Glück, dass Sie diesen auch gepostet hatten.

+0

Danke für die Antwort. Es funktionierte! Es gibt keine Möglichkeit, Fragen auf dieser Website zu schließen/löschen ... zumindest konnte ich es nicht finden. – Ashish

+0

Das ist eine wirklich gute Antwort !! – 3vts

Verwandte Themen