1、编译基类源代码,生成静态库,如果使用UNICODE编码开发,分布使用Debug_Unicode和Release_Unicode生成strmbasd.lib和STRMBASE.lib。
2、在Studio中配置头文件和LIB库路径:
头文件路径:
xxx/Microsoft DirectX 9.0 SDK (October 2004)/Include
xxx//Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/Common
xxx/Microsoft Platform SDK/Include
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
…………
LIB路径:
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses/Debug_Unicode
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses/Release_Unicode
xxx/Microsoft DirectX 9.0 SDK (October 2004)/Lib
xxx/Microsoft Platform SDK/Lib
$(VCInstallDir)lib
$(VCInstallDir)atlmfc/lib/i386
$(VCInstallDir)PlatformSDK/lib
$(VCInstallDir)atlmfc/lib
$(FrameworkSDKDir)lib
…………
3、用VC向导生成WIN32动态链接库作为工程。
4、在Filter头文件中包含头文件streams.h和initguid.h。
5、一般使用__stdcall函数调用协议,选择工程属性|C/C++|Advanced,将Calling Convention改为__stdcall(/Gz)。
6、配置Lib,选择工程属性|Linker|Input,在Additional Dependencies中添加msvcrtd.lib quartz.lib winmm.lib,DEBUG版本添加strmbasd.lib,RELEASE版本添加strmbase.lib。
7、定义一个.def文件用于导出DLL函数,例如Filter.def,内容:
LIBRARY "Filter.ax"
EXPORTS
DllMain PRIVATE
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
8、定义DLL入口函数:
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD dwReason,
LPVOID lpReserved)
{
return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
}
9、配置调试环境,选择工程属性|Debugging,在command中输入:
xxx/Microsoft Platform SDK/Bin/graphedt.exe
这样配置后,注册Filter.ax,然后就可以下断点调试了。
2、在Studio中配置头文件和LIB库路径:
头文件路径:
xxx/Microsoft DirectX 9.0 SDK (October 2004)/Include
xxx//Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/Common
xxx/Microsoft Platform SDK/Include
$(VCInstallDir)include
$(VCInstallDir)atlmfc/include
$(VCInstallDir)PlatformSDK/include
$(FrameworkSDKDir)include
…………
LIB路径:
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses/Debug_Unicode
xxx/Microsoft Platform SDK/Samples/Multimedia/DirectShow/BaseClasses/Release_Unicode
xxx/Microsoft DirectX 9.0 SDK (October 2004)/Lib
xxx/Microsoft Platform SDK/Lib
$(VCInstallDir)lib
$(VCInstallDir)atlmfc/lib/i386
$(VCInstallDir)PlatformSDK/lib
$(VCInstallDir)atlmfc/lib
$(FrameworkSDKDir)lib
…………
3、用VC向导生成WIN32动态链接库作为工程。
4、在Filter头文件中包含头文件streams.h和initguid.h。
5、一般使用__stdcall函数调用协议,选择工程属性|C/C++|Advanced,将Calling Convention改为__stdcall(/Gz)。
6、配置Lib,选择工程属性|Linker|Input,在Additional Dependencies中添加msvcrtd.lib quartz.lib winmm.lib,DEBUG版本添加strmbasd.lib,RELEASE版本添加strmbase.lib。
7、定义一个.def文件用于导出DLL函数,例如Filter.def,内容:
LIBRARY "Filter.ax"
EXPORTS
DllMain PRIVATE
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
8、定义DLL入口函数:
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD dwReason,
LPVOID lpReserved)
{
return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
}
9、配置调试环境,选择工程属性|Debugging,在command中输入:
xxx/Microsoft Platform SDK/Bin/graphedt.exe
这样配置后,注册Filter.ax,然后就可以下断点调试了。