Bağlayıcı Araçları Uyarısı LNK4227
meta veri işlemi uyarısı (HRESULT) : warning_message
Bağlayıcı, birleştirme sırasında meta veri farklılıklarını algıladı:
Derlemenin derlendiği bir veya daha fazla başvurulmakta olan derleme.
Derlemedeki bir veya daha fazla kaynak kod dosyası.
Örneğin, LNK4227 aynı ada sahip iki genel işleviniz varsa ancak parametre bilgileri farklı bildiriliyorsa (diğer bir ifadeyle, bildirimler tüm compiland'larda tutarlı değilse) oluşabilir. Türlerin nasıl farklılık gösterdiğini görmek için her .obj dosyasında ildasm.exe /TEXT /METADATA object_file kullanın.
LNK4227, başka bir araçla ortaya çıkan sorunları bildirmek için de kullanılır. Daha fazla bilgi için uyarı iletisini arayın.
Uyarıyı çözmek için meta veri sorunlarının düzeltilmesi gerekir.
Örnekler
LNK4227, başvuruda bulunılan bir derleme, başvuruda bulunan derlemeden farklı şekilde imzalandığında oluşturulur.
Aşağıdaki örnek LNK4227 oluşturur:
// LNK4227.cpp
// compile with: /clr
using namespace System::Reflection;
[assembly:AssemblyDelaySignAttribute(false)];
int main() {}
ve ardından,
// 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, derleme özniteliklerine yanlış biçimdeki sürüm numaraları geçirildiğinde de oluşturulabilir. '*' gösterimi öğesine AssemblyVersionAttribute
özgüdür. Bu uyarıyı çözmek için yalnızca dışındaki AssemblyVersionAttribute
sürüm özniteliklerindeki sayıları kullanın.
Aşağıdaki örnek LNK4227 oluşturur:
// 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")];