首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python获取dll资料中的函数失败

2012-08-09 
python获取dll文件中的函数失败各位前辈高手们,我遇到一个非常纠结的问题,特来向各位请教。我使用python加

python获取dll文件中的函数失败
各位前辈高手们,我遇到一个非常纠结的问题,特来向各位请教。
我使用python加载了一个C编译之后的dll文件,使用的方法如下:

Python code
FFT_INTERNAL_LIB_PATH = os.path.join(os.path.dirname(__file__), 'dll_lib/CWrappersLib.dll').replace('\\','/')inter_object = Nonetry:    inter_object = WinDLL(FFT_INTERNAL_LIB_PATH)except Exception, e:    print "Load DLL file failed, error is ", e

在C的头文件提供的接口中,有下面这个方法:
C/C++ code
/** configure filter with filtering params*/CWRAPPERS_EXPORT fft_error_t FFTAPI fft_Configure_Filter(fft_FilterHandle pHandle, fft_traffic_filtering_params_t params);


我加载了这个DLL文件,并尝试使用fft_configure_filter = inter_object.fft_Configure_Filter 来获取到这个方法。
但是在我调试时,我的到一个错误 “function 'fft_Configure_filter' not found”.


我使用了depends.exe查看了这个dll文件,如图:


其中是存在fft_Configure_Filter这个方法的,同时我使用DLL中同时存在的方法fft_Create_Filter作为测试,用inter_object.fft_Create_Filter尝试获取这个方法,能够成功获取:

fft_Create_Filter在C的头文件中定义如下:
C/C++ code
/** create filter*/CWRAPPERS_EXPORT fft_FilterHandle FFTAPI fft_Create_Filter();


我很奇怪为什么同样的由加载了DLL文件的inter_object对象,能获取到除了fft_Configure_Filter以外的全部方法,但是fft_Configure_Filter这个方法却会提示说未找到。

不知道有没有有过相同经历的朋友,能否提供我一下解决方案。

[解决办法]
你这2个函数的导出方式略有差异,是不是这个原因啊?
CWRAPPERS_EXPORT fft_error_t FFTAPI fft_Configure_Filter(...);
CWRAPPERS_EXPORT fft_FilterHandle FFTAPI fft_Create_Filter();
[解决办法]
探讨…但是在我调试时,我的到一个错误 “function 'fft_Configure_filter' not found”…

热点排行