Kompilatorvarning (nivå 3) C4398

Variabel: det globala objektet per process kanske inte fungerar korrekt med flera appdomäner. överväg att använda __declspec(appdomain)

Anmärkningar

En virtuell funktion med __clrcall anropskonvention i en inbyggd typ orsakar skapandet av en vtable per programdomän. En sådan variabel kanske inte korrigeras korrekt när den används i flera programdomäner.

Du kan lösa den här varningen genom att uttryckligen markera variabeln __declspec(appdomain). I versioner av Visual Studio före Visual Studio 2017 kan du lösa den här varningen genom att kompilera med /clr:pure, vilket gör globala variabler per appdomän som standard. Kompileringsalternativet /clr:pure är inaktuellt i Visual Studio 2015 och stöds inte i Visual Studio 2017.

Mer information finns i appdomäner och programdomäner och Visual C++.

Example

I följande exempel genereras C4398.

// C4398.cpp
// compile with: /clr /W3 /c
struct S {
   virtual void f( System::String ^ );   // String^ parameter makes function __clrcall
};

S glob_s;   // C4398
__declspec(appdomain) S glob_s2;   // OK