error LNK2019 无法解析的外部符号 vs2005

一般性问题http://blog.csdn.net/lingdxuyan/article/details/4389634

特殊性问题error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu                     

http://blog.csdn.net/ilovewshy/article/details/4096605

 

还有一种关于VS2005配置问题导致wchar_t无法解析的问题

 

今天用VS2005编译DirectShow程序,发现出来很多莫名其妙的链接错误:如下:

error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter::FindPin(wchar_t const *,struct IPin * *)" ( ?FindPin@CBaseFilter@@UAGJPB_WPAPAUIPin@@@Z)
error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter::JoinFilterGraph(struct IFilterGraph *,wchar_t const *)" ( ?JoinFilterGraph@CBaseFilter@@UAGJPAUIFilterGraph@@PB_W@Z)
error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter::QueryVendorInfo(wchar_t * *)" ( ?QueryVendorInfo@CBaseFilter@@UAGJPAPA_W@Z)
上网一查,发现如下设置即可:
C/C++ | Language | Treat wchar_t as built-in type: yes?no?
默认为是,设置为否即可
为什么会出现这种错误呢?是因为VC6以及VS2003在wchar_t内置的选项上默认为No,而VS2005在此选项上默认为Yes,我今天使用VS2005打开原来VS2003建立的BaseClass项目,使得选项为No,这样编译出来的基类库的选项就是No了。
然后,在使用VS2005新建DirectShow程序时,默认选项为Yes,这样程序与基类的选项就不一致了,在函数的参数涉及到wchar_t时,程序的链接会由于生成的名字不同而导致链接不上(同样是wchar_t,链接时lib文件的符号是不同的)。
弄清楚这个问题之后,此选项的选择就无所谓了,只要工程和Lib在该选项上一致即可。

http://blog.sina.com.cn/s/blog_4cd3b57101008yh6.html

你可能感兴趣的:(struct,function)