yaml c ++ dll под визуальной студией - PullRequest
1 голос
/ 27 февраля 2012

Я пытаюсь создать dll с 'yaml-cpp-0.3.0' в Visual Studio 8 2005 и получаю ошибку компоновки для 'INSTALL', 'run-tests'

Ошибка 1ошибка LNK2019: ссылка на неразрешенный внешний символ «void __cdecl YAML :: operator >> (класс YAML :: Node const &, класс YAML :: Binary &)» (?? 5YAML @@ YAXABVNode @ 0 @ AAVBinary @ 0 @@ Z)в функции "public: class YAML :: Binary const __thiscall YAML :: Node :: to (void) const" (?? $ to @ VBinary @ YAML @@@ Node @ YAML @@ QBE? BVBinary @ 1 @ XZ) parsertests.obj

Ошибка 2: фатальная ошибка LNK1120: 1 неразрешенная внешность .... \ yaml-cpp_dll \ build \ test \ Debug \ run-tests.exe 1

с использованием общегошаги, упомянутые пользователем на http://code.google.com/p/yaml-cpp/issues/detail?id=88

  1. cd yaml-cpp для 'yaml-cpp-0.3.0'
  2. mkdir build
  3. cd build
  4. cmake -DBUILD_SHARED_LIBS = ON -G "Visual Studio 8 2005" ..

Нужна помощь, как это исправить.Любые входы приветствуются.

1 Ответ

2 голосов
/ 27 октября 2012

У меня была такая же ошибка компоновки с Visual Studio 9 2008. Проблема в том, что оператор >>, объявленный в binary.h, не экспортируется.После внесения следующих изменений в binary.h все работало нормально:

#include "yaml-cpp/dll.h"  // add a new include to have YAML_CPP_API defined

...

// add the missing YAML_CPP_API
YAML_CPP_API void operator >> (const Node& node, Binary& binary); 
...