TCHAR *到LPCSTR - 链接器错误

时间:2015-04-17 19:03:23

标签: c++ mingw

我目前正在将一些代码从Visual Studio移植到Mingw.This代码来自一个开源库。我遇到了这个构造函数,其中一个TCHAR *被传递给LPCSTR。我只是使用基本的Cstyle转换来转换在Visual Studio中,我不需要强制转换,应用程序构建正常。但是如果我没有放置演员,我会在Mingw GCC中收到链接器错误。

这是建筑师

CAsyncReader::CAsyncReader(
    TCHAR *pName,
    LPUNKNOWN pUnk,
    CAsyncStream *pStream,
    HRESULT *phr)
  : CBaseFilter(
                LPCSTR(pName), // Is this cast ok ?
                pUnk,
                &m_csFilter,
                CLSID_AsyncSample,
                NULL
                ),
    m_OutputPin(
                phr,
                this,
                &m_Io,
                &m_csFilter),
    m_Io(pStream)
{
}

这是父类CBaseFilter

的构造函数
 CBaseFilter(
        __in_opt LPCTSTR pName,    // Object description
        __in_opt LPUNKNOWN pUnk,  // IUnknown of delegating object
        __in CCritSec  *pLock,    // Object who maintains lock
    REFCLSID   clsid,             // The clsid to be used to serialize this filter
        __inout HRESULT   *phr);  // General OLE return code
        }

如果有效,请告诉我。

更新

由于应用程序在VS中构建得很好,并且在Mingw GCC中给我一个链接器错误,我的问题是我的GCC项目中是否有任何标志,或者VS是否隐含地执行此操作?这两个项目都启用了UNICODE,所以我完全混淆了链接器错误。这是我在Mingw GCC中遇到的链接器错误,并且与演员一起离开(现在我肯定从评论中判断为非常错误)。

undefined reference to `CBaseFilter::CBaseFilter(wchar_t const*, IUnknown*, CCritSec*, _GUID const&, long*)'
collect2.exe: error: ld returned 1 exit status

0 个答案:

没有答案