我正在尝试将一些代码从Visual Studio项目移植到mingw。
编译器指出一个未定义的引用错误,其中假设第二个参数是wchar_t const*
。我有_UNICODE
和。{
我的项目中定义了UNICODE
undefined reference to `CBaseVideoRenderer::CBaseVideoRenderer(_GUID const&, wchar_t const*, IUnknown*, long*)'
以下是我正在使用的代码
基类的构造函数是这个
CBaseVideoRenderer(REFCLSID RenderClass,LPCTSTR pName, LPUNKNOWN pUnk,
HRESULT *phr);
这是在基类
中启动的方式MemRenderer::MemRenderer(LPUNKNOWN ptr, HRESULT *hr, OutputBuffer *buffer)
: CBaseVideoRenderer(__uuidof(CLSID_MemRenderer), NAME("MemRenderer"), ptr, hr)
现在我收到上述声明中的错误
undefined reference to `CBaseVideoRenderer::CBaseVideoRenderer(_GUID const&, wchar_t const*, IUnknown*, long*)'
我的问题是我为什么会收到这个错误?我查了LPCTSTR,它似乎是一个常量的char指针所以我也尝试了这个
MemRenderer::MemRenderer(LPUNKNOWN ptr, HRESULT *hr, OutputBuffer *buffer)
: CBaseVideoRenderer(__uuidof(CLSID_MemRenderer), "MemRenderer", ptr, hr)
但是我收到了错误
error: no matching function for call to 'CBaseVideoRenderer::CBaseVideoRenderer(const GUID&, const char [12], IUnknown*&, HRESULT*&)'
buffer(buffer)
有关如何解决此问题的任何建议?
答案 0 :(得分:1)
LPCTSTR的定义取决于UTF-16 unicode是否作为默认字符类型启用。
这对litterals有影响:
"xxx"
。 L"xxx"
您可以找到有关要使用的类型的更多信息here。