0

我在本机 WinRT 组件中使用名为 Engine 的第 3 方基于 COM 的库,该组件稍后应充当第 3 方库的包装器。在我的项目中设置了第 3 方库的 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

有任何想法吗?

4

1 回答 1

0

在 Inspired 的帮助下解决了这个问题:我使用的是为 ARM 构建的库和 x86 构建配置。更改后链接正常。

于 2013-06-21T13:12:16.280 回答