2011-10-07 200 views
0

我想調用DLL中定義的函數,這裏記載:GetProcAddress的,錯誤127(ERROR_PROC_NOT_FOUND)

http://xiph.org/vorbis/doc/vorbisfile/ov_fopen.html

LoadLibraryA成功和GetProcAddress似乎每隔功能我返回一個有效的地址已經試過了。這裏它返回NULL,GetLastError()返回127(ERROR_PROC_NOT_FOUND)。

const char* dllName = "libvorbisfile.dll"; 
mhDll = LoadLibraryA(dllName); 
typedef int (__cdecl *OV_FOPEN)(char*, OggVorbis_File*); 
OV_FOPEN ProcFOpen = (OV_FOPEN) GetProcAddress(mhDll, "ov_fopen"); 

我該怎麼辦?

+1

你自己構建了libvorbisfile.dll還是你從別的地方得到它?在任何情況下,[depend.exe](http://www.dependencywalker.com/)都可以告訴你DLL是否真的導出了該函數。 –

回答

4

根據this discussion thread,一些版本的libvorbisfile.dll缺少ov_fopen。

+0

我不知道你在哪裏找到那個線索,但在這裏似乎就是這種情況。我打開DLL的依賴和功能丟失! :( – user974967

+6

我所做的只是一個網絡搜索'ov_fopen libvorbisfile'和繁榮那裏它是在結果的第一頁。 –

3

Depends檢查DLL並找出爲什麼找不到該函數。這可能是文檔中的名稱是錯誤的或者存在名稱損壞問題。