Zum Inhalt springen

Übergabe eine std::map<...>& aus einer DLL heraus.


Empfohlene Beiträge

Geschrieben

Hi,

ich habe ein kleines Problem. Vorweg ich arbeite mit MS VC++ 6.0. Also ich habe eine Dll und ein Programm, dass diese Dll einbindet.

// Dll

// ...

std::map<std::string, std::string> params;

// params füllen


// TESTAUSGABE 1

for (std::map<std::string, std::string>::iterator iter = params.begin(); 

      iter != params.end(); 

      iter ++ )

{

   std::cout <<  (*iter).first << " / " << (*iter).second << "\n"; 

}

std::cout << std::endl;


// m_callback ist ein Zeiger auf eine Funktion und zeigt auf callback im 

// Programm.

m_callback(params);


// ...


// -----------------------------------------------------------------------

// Programm

// ...

void callback (std::map<std::string, std::string>& params)

{

   // TESTAUSGABE 2

   for (std::map<std::string, std::string>::iterator iter = params.begin(); 

         iter != params.end(); 

         iter ++ )

   {

      std::cout <<  (*iter).first << " / " << (*iter).second << "\n"; 

   }

   std::cout << std::endl;

}

// ...

Zum Problem: Ich habe zum Testen die beiden Ausgaben eingebaut. Ausgabe 1 funktioniert einwandfrei udn zeigt mir alle key/value- Paare an, die ich vorher in die map geschrieben habe. Ausgabe 2 schlägt fehl. Die map enthält die richte Anzahl Elemente (params.size()). Dementsprechend läuft auch die Schleife die 'richtige' Anzahl Durchläufe. Aber ich kann auf den Iterator nicht zugreifen. Beim Versuch (*iter).first bzw. (*iter).second auszugeben crashed mein Programm.

Die Lösung überlasse ich Euch ;) Ich hate schon an einen Compilerfehler gedacht (ähnlich dem Problem, dass ich in der callback Funktion keinen std::string zurückgeben kann), dazu ist mir allerdings nichts bekannt.

Geschrieben
  maddin schrieb:
Vorweg ich arbeite mit MS VC++ 6.0.

...

ähnlich dem Problem, dass ich in der callback Funktion keinen std::string zurückgeben kann

Stell die C-Runtime in der DLL und im Programm auf Multithreaded [Debug] DLL.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Weiterlesen  

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...