リンカー ツール エラー LNK2028

"function_containing_function_call" (decorated_name) 関数で参照される "exported_function" (decorated_name)

解説

ネイティブ関数を純粋なイメージにインポートしようとする場合、ネイティブと純粋コンパイルでは暗黙的な呼び出し規則が異なることに注意してください。

/clr:pure コンパイラ オプションは Visual Studio 2015 では非推奨とされており、Visual Studio 2017 ではサポートされていません。

このコード サンプルでは、エクスポートされたネイティブな関数を持つコンポーネントが生成されます。その呼び出し規則は暗黙的に __cdecl です。

// LNK2028.cpp
// compile with: /LD
__declspec(dllexport) int func() {
   return 3;
}

次のサンプルでは、ネイティブ関数を使用する純粋なクライアントが作成されます。 ただし、/clr: pure での呼び出し規則は __clrcall です。 次の例では LNK2028 が生成されます。

// LNK2028_b.cpp
// compile with: /clr:pure lnk2028.lib
// LNK2028 expected
int func();

int main() {
   return func();
}