我在本机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
有什么想法吗?
答案 0 :(得分:0)
在Inspired的帮助下计算出来:我正在使用为ARM构建的lib和x86构建配置。改变后,它连接正常。