2010-06-11 73 views
1

我有C++ DLL和1个程序(不是代码),该程序从DLL中调用1个函数,我只知道该函数的名称,现在都想从我的应用程序调用该函数(C#) 。可能吗?从C++中提取函数信息dll

感谢

+0

是在一个普通的名字或一个错位的名字? – 2010-06-11 08:51:03

回答

2

我假设你只有通过自身拥有的DLL,如果你已经有了一个头文件,以及它会比较容易,因为你可以直接跳到搞清楚如何的PInvoke它。

首先,您必须掌握函数签名,以便了解参数及其类型。如果它是一个C++ DLL,那么你可以用Dependency Walker来解决这个问题,如果它是一个C DLL,那么你可能不得不看看实际的汇编代码来找出参数及其类型。

如果确实找出了签名,那么可以使用PInvoke从C#调用它,查看PInvoke website了解更多详细信息和许多示例。

+0

谢谢relpy ... Dependency Walker显示这是一个c dll,它不能显示更多信息,只能显示函数名。 我安装PInvoke,它只有搜索按钮,我如何选择我的dll或函数,以显示信息? 谢谢 – 2010-06-11 10:17:26

+0

@Armen:抱歉,您误解了,PInvoke无法用于查找有关该函数的信息。你首先必须以某种方式找到它,然后使用PInvoke来调用它。 PInvoke网站可以为您提供有关如何将C#映射到C数据类型等方面的信息。我认为您需要知道的仅仅是函数的非繁琐名称,它的参数和类型,但是发现它可能很困难。 – 2010-06-11 10:25:23

+0

好的,tahnks。 – 2010-06-11 10:39:55