Почему Graphviz не работает в gvLayout?

Еще раз, здесь я пишу C, не зная, что я делаю …

Я ударил простую функцию, которую я могу вызвать из программы C #, которая принимает строку DOT, формат вывода и имя файла и отображает график с помощью Graphviz.

#include "types.h" #include "graph.h" #include "gvc.h" #define FUNC_EXPORT __declspec(dllexport) // Return codes #define GVUTIL_SUCCESS 0 #define GVUTIL_ERROR_GVC 1 #define GVUTIL_ERROR_DOT 2 #define GVUTIL_ERROR_LAYOUT 3 #define GVUTIL_ERROR_RENDER 4 FUNC_EXPORT int RenderDot(char * dotData, const char * format, const char * fileName) { Agraph_t * g; // The graph GVC_t * gvc; // The Graphviz context int result; // Result of layout and render operations // Create a new graphviz context gvc = gvContext(); if (!gvc) return GVUTIL_ERROR_GVC; // Read the DOT data into the graph g = agmemread(dotData); if (!g) return GVUTIL_ERROR_DOT; // Layout the graph result = gvLayout(gvc, g, "dot"); if (result) return GVUTIL_ERROR_LAYOUT; // Render the graph result = gvRenderFilename(gvc, g, format, fileName); if (result) return GVUTIL_ERROR_RENDER; // Free the layout gvFreeLayout(gvc, g); // Close the graph agclose(g); // Free the graphviz context gvFreeContext(gvc); return GVUTIL_SUCCESS; } 

Он компилируется нормально, но когда я его вызываю, я получаю GVUTIL_ERROR_LAYOUT . Сначала я подумал, что это могло быть так, как я объявлял свою подпись P / Invoke, поэтому вместо этого я протестировал ее с помощью программы на C, но она все равно потерпела неудачу.

 RenderDot("digraph graphname { a -> b -> c; }", "png", "C:\testgraph.png"); 

Я что-то пропустил?

РЕДАКТИРОВАТЬ

Если есть вероятность, что это связано с тем, как я компилирую код, вот команда, которую я использую:

 cl gvutil.c /I "C:\Program Files (x86)\Graphviz2.26\include\graphviz" /LD /link /LIBPATH:"C:\Program Files (x86)\Graphviz2.26\lib\release" gvc.lib graph.lib cdt.lib pathplan.lib 

Я слежу за этим учебным пособием, в котором объясняется, как использовать Graphviz в качестве библиотеки, поэтому я связан с файлами .lib, которые он перечисляет.

Graphviz загружает плагины и графические плагины динамически на основе информации в файле конфигурации, которую я не копировал в каталог моего приложения.