public const string LIB_GVC = "gvc.dll";
public const string LIB_GRAPH = "graph.dll";
public const int SUCCESS = 0;
[DllImport(LIB_GVC)]
public static extern IntPtr gvContext();稍后,在main方法中,我调用gvContext(),它抛出DllNotFoundException。在我的项目中,我进入项目->属性并设置引用路径,这样我就有了一个名为"resources“的文件夹,其中包含我所有的DLL,包括gvc.dll。我本以为这会起作用,但它没有。我需要做什么呢?
注意:我不能像往常一样使用Add Reference,我意识到考虑到Graphviz不是一个C#库,这种行为是正常的。我在术语上也有点模糊,为什么它被称为“非托管DLL"?这似乎是因为它不是从C#代码编译而来的,但这是真的吗/不是全部?
我正在关注this tutorial,如果它有助于澄清任何事情的话。
发布于 2011-06-08 23:42:13
问题是可执行文件找不到可执行文件的路径。在你运行它之后,试着把它放到/bin文件夹中,看看它是如何工作的。如果是这样,您的资源文件夹可能是a)找不到,或者b)您在编译上有一个未正确设置的复制操作。
至于“什么是非托管的”,COM和本机组件的内存要么由库本身处理(在某些情况下始终是本机的,COM可能由运行时处理),要么由.NET以外的其他组件处理。由于它们不是.NET组件,因此无法管理内存使用。这就是它们被称为“非托管”的原因。
https://stackoverflow.com/questions/6281413
复制相似问题