在C#dll中使用平台调用

本温

我想到了一个引起头痛的问题。

让我首先描述一下总体思路:

1)我得到了一些本地的c ++代码,我为此编写了一个包装程序,以通过Platform Invoke进行访问。结果是,让我们说了wrapped.dll。

2)我得到了一个ac#项目,其中包含一个应用程序,app.exe和一个类库,将其命名为plugin.dll。

3)我想在我的plugin.dll中导入Wrapped.dll

多数民众赞成在一般情况下。

现在的问题是:

这个想法是在C#中使用Pinvoke导入wrapd.dll

[DLLImport("Wrapped.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void someFunction();

只要我在我的C#应用​​程序main()中进行导入,导入工作就很好。但想法是要从我的plugin.dll中访问它。由于某种原因,这不起作用,我得到一个例外:

System.DLLnotFoundException in Plugin.dll

它与wrapped.dll的路径无关。我尝试了pluging.dll,应用程序和绝对路径的标准\ bin文件夹(例如“ C. \ User \ Projects \”)。

我现在想问的是:

平台调用只能在应用程序中进行吗?是否有某种额外的步骤可以使它在dll中访问?

请注意,这与我的wrapper.dll无关。我可以从应用程序main()导入并调用它。而且我很确定这与路径无关。

提前致谢,

Ben

well

不必烦人,但我要说的是问题所在。

无论如何,当在.Net中包装DLL时,还有另一个常见错误...检查您的编译平台,Wrapper.dll是32bit / 64bit还是Plugin.dll吗?

为了避免混淆,请尽量不要使用“任何CPU”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章