Dela via


Länkverktygsfel LNK2031

det går inte att generera p/invoke för function_declarationdecorated_name; anropskonvention saknas i metadata

Anmärkningar

När du försöker importera en intern funktion till en ren bild bör du komma ihåg att de implicita anropskonventionerna skiljer sig mellan interna och rena kompileringar. Mer information om rena bilder finns i Pure and Verifiable Code (C++/CLI).

Kompileringsalternativet /clr:pure är inaktuellt i Visual Studio 2015 och stöds inte i Visual Studio 2017.

Examples

Det här kodexemplet genererar en komponent med en exporterad, intern funktion vars anropskonvention implicit __cdecl.

// LNK2031.cpp
// compile with: /LD
extern "C" {
   __declspec(dllexport) int func() { return 3; }
};

I följande exempel skapas en ren klient som använder den inbyggda funktionen. Anropskonventionen under /clr:pure är dock __clrcall. I följande exempel genereras LNK2031.

// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();

int main() {
   return func();
}

I följande exempel visas hur du använder den inbyggda funktionen från en ren bild. Observera den explicita __cdecl anropskonventionsspecificeraren.

// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();

int main() {
   return func();
}