我在本机 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
有任何想法吗?