0

ネイティブの WinRT コンポーネントで Engine と呼ばれるサード パーティの COM ベースのライブラリを使用しています。これは、後でサード パーティのライブラリのラッパーとして機能する必要があります。私のプロジェクトでは、Engine.lib とサード パーティの lib 用の Engine.h ファイルがセットアップされています。

次の cpp ファイルの LNK2019 を取得しています。

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

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

コードは正常にコンパイルされ、Engine.lib は VS2012 のプロジェクト設定でセットアップされます。また、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