Dela via


Linker Tools Varning LNK4227

varning för metadataåtgärd (HRESULT) : warning_message

Anmärkningar

Länkaren identifierade metadataskillnader vid sammanslagning:

  • En eller flera angivna moduler i förhållande till den modul som för närvarande byggs.

  • En eller flera källkodsfiler i en kompilering.

Till exempel kan LNK4227 orsakas om du har två globala funktioner med samma namn men parameterinformation som deklareras annorlunda (det vill säga att deklarationer inte är konsekventa i alla kompileringar). Använd ildasm.exe /TEXT /METADATA object_file på varje .obj fil för att se hur typerna skiljer sig åt.

LNK4227 används också för att rapportera problem som har sitt ursprung i ett annat verktyg. Sök efter varningsmeddelandet för mer information.

Metadataproblemen måste åtgärdas för att lösa varningen.

Examples

LNK4227 genereras när en refererad sammansättning signerades på ett annat sätt än den sammansättning som refererar till den.

Följande exempel genererar LNK4227:

// LNK4227.cpp
// compile with: /clr
using namespace System::Reflection;

[assembly:AssemblyDelaySignAttribute(false)];

int main() {}

och sedan,

// LNK4227b.cpp
// compile with: /clr LNK4227.cpp /FeLNK4227b.exe
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;

[assembly:AssemblyDelaySignAttribute(true)];
// Try the following line instead
// [assembly:AssemblyDelaySignAttribute(false)];

ref class MyClass
{
};

LNK4227 kan också genereras när versionsnummer i fel format skickas till sammansättningsattribut. Notationen *är specifik för AssemblyVersionAttribute. Lös den här varningen genom att endast använda tal i andra versionsattribut än AssemblyVersionAttribute.

Följande exempel genererar LNK4227:

// LNK4227e.cpp
// compile with: /clr /LD /W1
using namespace System::Reflection;
[assembly:AssemblyVersionAttribute("2.3.*")];   // OK
[assembly:AssemblyFileVersionAttribute("2.3.*")];   // LNK4227
// try the following line instead
// [assembly:AssemblyFileVersionAttribute("2.3")];