2016-05-15 4 views
3

Ich habe eine YAML-Datei, bestehend aus:YAML nicht aufgelöstes externes Symbol (yaml-CPP)

abc: 123 

Und ich bin mit dem folgenden Code, um es zu laden:

YAML::Node base = YAML::Load("test.yaml"); 
std::cout << base["abc"].as<int>() << std::endl; 

MSVC nicht verknüpfen (verursacht durch die zweite Zeile), die besagt:

unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > YAML::detail::node_data::empty_scalar" 

ich weiß nicht, was ich falsch mache, oder ob ich es einfach falsch eingestellt. Es verbindet und analysiert Dateien in Ordnung, lässt mich YAML::Node::operator[] nicht benutzen, ohne mir einen Fehler zu geben.

+1

Das ist kein Kompilierungsfehler. –

+2

Haben Sie http://stackoverflow.com/q/36403287/212870 gelesen? –

Antwort

0

Sie müssen mit der yaml-cpp Bibliothek verknüpfen.

+0

Ich habe die Bibliothek verlinkt. Wie ich schon sagte, wird es Dateien analysieren (was ich annehmen würde, würde nicht funktionieren, wenn ich die Bibliothek nicht verbunden hätte), ich habe nur Probleme beim Zugriff auf die Daten in den Dateien nach dem Parsen von ihnen. – Thoom1940

+0

@Thoom Vielleicht sollten Sie den Code zeigen, der funktioniert. –

+0

@AlanStokes Wenn ich die zweite Zeile entferne, funktioniert es. Ich kann auch feststellen, dass YAML :: ParserException ausgelöst wird, um Fehlermeldungen von einer ungültigen YAML-Datei zu erhalten. Nur wenn ich auf Daten von einer Datei zugreife, die ich geladen habe (über 'operator []') funktioniert mein Code nicht mehr. Es ist möglich, dass andere Funktionen ausgeführt werden, aber ich weiß nicht viel über die Bibliothek. – Thoom1940