2010-06-11 72 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