2011-10-07 102 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并找出为什么找不到该函数。这可能是文档中的名称是错误的或者存在名称损坏问题。