问题描述:
本人使用 Microsoft Visual Studio 编写 MFC 代码
在编写压缩、存储等与视频相关的代码时(以下代码为例):
int Compress(void *aBuffer)
{
//CyAssert( mCompressing );
//CyAssert( mTempBuffer != NULL );
long lSamplesWritten, lBytesWritten;
for( unsigned short lLine = 0; lLine < mSizeY; lLine++ )
{
unsigned char *lCurLine = (unsigned char *)aBuffer + (lLine ) * mSizeX * mBPP;
unsigned char *lCurLineInv = mTempBuffer + (mSizeY - lLine - 1) * mSizeX * mBPP;
memcpy( lCurLineInv, lCurLine, mSizeX * mBPP );
}
if(mTempBuffer == NULL || AVIStreamWrite( mAVICompressedStream, mLastSample, 1, mTempBuffer, mImageSize, 0,
&lSamplesWritten, &lBytesWritten ) != 0 ||
lSamplesWritten < 1 ||
lBytesWritten < 1 )
{
return 1;
}
mLastSample ++;
return 0;
}
void SaveAVI(void *arg)
{
BYTE * pData=(BYTE *)arg;
BYTE * pDatas=new BYTE[WIDTH*HEIGHT*3];
convert_yuv_to_rgb_buffer(pData,pDatas,WIDTH,HEIGHT);
Compress( pDatas );
delete []pDatas;
}
在编译过程中编译器显示以下错误:
error LNK2001: unresolved external symbol _AVIStreamWrite@32
解决方案:
出现这个错误的原因是缺少了Vfw32.lib这个库。
Vfw32.lib这个库是微软公司提供的视频处理功能库,大家可以在以下网址中下载:
下载地址:http://www.bvbcode.com/cn/lz8hqw0x-1687899-down
注意:有些坑人的网站里表面上写的是Vfw32.lib,其实下载到的是mfc42ud.lib这个库,这个是不对的。
在加载了VFM32.lib这个库之后,程序编译成功。
#pragma comment (lib,"VFW32")