未解析的外部符号LNK2019,带有基于COM的lib的WinRT组件

时间:2013-06-21 11:20:58

标签: c++ linker windows-runtime wrl

我在本机WinRT组件中使用名为Engine的第三方基于COM的库,该组件稍后应该充当第三方库的包装器。 在我的项目中设置了第三方库的Engine.lib和Engine.h文件。

我正在为我的后续cpp文件获取LNK2019:

#include "pch.h"
#include "Engine.h"

void Component::Init()
{
ComPtr<IEngine> spEngine;
Settings settings;
CreateEngine(&settings, &spEngine);
}

代码编译正常,并且在VS2012的项目设置中设置了Engine.lib。 Engine.lib的DUMPBIN / EXPORTS也显示CreateEngine已公开。我也可以使用Engine.h中定义的其他类型,但只要调用CreateEngine,就会引发链接器错误:

Error   1   error LNK2019: unresolved external symbol CreateEngine@8 referenced in function "public: virtual void __cdecl 

Engine.h定义了CreateEngine,如下所示:

STDAPI CreateEngine(
    _In_ Settings * pSettings,
    _Outptr_ IEngine **ppEngine );

STDAPI是通常的宏:

#define STDAPI   extern "C" HRESULT __stdcall

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在Inspired的帮助下计算出来:我正在使用为ARM构建的lib和x86构建配置。改变后,它连接正常。