저는 C#에서 graphviz를 라이브러리로 사용하고 있습니다. gvc.dll 및 cgraph.dll here에서 함수를 가져 오는 데 도움이되는 해결책을 찾았습니다.graphviz에서 노드 위치 얻기
내가하고 싶은 것은 렌더링 된 그래프에서 노드의 위치를 얻는 것입니다.
if (gvLayout(gvc, g, layout) != SUCCESS)
throw new Exception("Layout failed.");
if (gvRender(gvc, g, "dot", IntPtr.Zero) != SUCCESS)
throw new Exception("Render failed.");
IntPtr np = agnode(g, "1", 0);
if (np == IntPtr.Zero)
throw new Exception("Node not found.");
string pos = agget(np, "pos");
다음 I가 agget 함수를 정의 :
[DllImport(LIB_GRAPH, CallingConvention = CallingConvention.Cdecl)]
public static extern string agget(IntPtr node, string attribute);
다하지만 agget 기능을 실행 한 후 디버깅 infromation으로 중단되고, 잘 보인다 library guide에 조사한 후 I는 RenderImage 기능이 용액을 사용했을 예기치 않게 실행 프로세스가 종료되었습니다. 그러나 아무 예외도 던지지 않았다.
내 코드가 잘못되었습니다. 아마도 매크로를 사용할 수 있습니다 : ND_pos? 하지만 그것을 찾을 수 없으며 C#에서 (DllImport 사용) 선언하는 방법을 모르겠습니다. 그래프를 렌더링 한 후 도트 파일에서 정보를 검색 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?