2009-10-12 44 views
2

我試圖使用DllImport屬性下面的代碼:使用dllimport的

[DllImport("grfinger.dll",EntryPoint="[email protected]")] 
public static extern int startenroll(int context); 

讓我用DUMPBIN /導出函數名。當我運行代碼時,出現以下異常:

Unable to find an entry point name '[email protected]' in DLL 'grfinger.dll'

如何解決此錯誤?

回答

0

不知道有關特定函數或庫的任何信息:我相信指定入口點爲entrypoint="startenroll"entrypoint="#4"而不是dumpbin輸出可能有所幫助。

5

_grstartenroll @ 4是dll中的decorated function name

這看起來像標準調用約定的命名,你可以嘗試:

[DllImport("grfinger.dll",EntryPoint="[email protected]", CallingConvention=CallingConvention.StdCall] 
public static extern int startenroll(int context); 

否則我會嘗試並獲得未修飾的函數名,可以通過管道DUMPBIN的輸出undname這樣的:

dumpbin/exports grfinger.dll | undname _grstartenroll @ 4

,然後在你的DLL導入使用未修飾的函數名。

+1

+1,除了dumpbin之外,您還可以查看這個免費工具:「Dependency Walker」(又名「依賴」)http://www.dependencywalker.com/。 – Groo

+0

Dependency Walker是一個很好的選擇,而且這樣一個小小的下載 – ParmesanCodice