Nach dem Entfernen der CRT aus meiner DLL habe ich diese seltsamen Fehler bekommen.Compiler-Problem nach dem Entfernen von CRT (DLL)
Hier sind sie:
- LNK2001 nicht aufgelöstes externes Symbol "Leere __cdecl std :: _ Xbad_alloc (void)" (? _Xbad_alloc @ std @@ YAXXZ)
- LNK2001 nicht aufgelöstes externes Symbol „Leere __cdecl std :: _ Xlength_error (char const *) "(? _Xlength_error @ std @@ YAXPBD @ Z)
- LNK2001 nicht aufgelöst externes Symbol" void __cdecl std :: _ Xout_of_range (char const *) "(? _Xout_of_range @ std @@ YAXPBD @ Z)
- nicht aufgelöstes externes Symbol __dtest
- nicht aufgelöstes externes Symbol __fdtest
- nicht aufgelöstes externes Symbol __invalid_parameter) noinfo_noreturn
- nicht aufgelöstes externes Symbol
- nicht aufgelöstes externes Symbol __stdio_common_vsprintf
- nicht aufgelöstes externes Symbol __std_terminate
__stdio_common_vsnprintf_s Wenn ich das richtig das verstehen Xbad_alloc
und Xlength_error
sind becau Se der new
und delete
Operatoren? In diesem Fall erstelle ich meine Klasseninstanz wie folgt aus:
class sc_Core
{
public:
static sc_Core *Instance(void);
func A();
public:
void *operator new(size_t si)
{
return HeapAlloc(GetProcessHeap(), NULL, si);
}
void operator delete(void *pv) throw()
{
HeapFree(GetProcessHeap(), NULL, pv);
}
private:
sc_Core(void) { }
~sc_Core(void) { }
sc_Core(const sc_Core&) { }
sc_Core(sc_Core&&) {}
sc_Core& operator=(const sc_Core&) {}
sc_Core& operator=(sc_Core&&) {}
static sc_Core *p_Instance;
};
// Global Scope
sc_Core *sc_Core::p_Instance = nullptr;
sc_Core *sc_Core::Instance(void)
{
if (p_Instance == nullptr)
p_Instance = new sc_Core();
return p_Instance;
}
Wenn jemand weiß, wie diese auftreten, oder wie ich sie beheben kann es sehr geschätzt werden würde!
Fügen Sie die Laufzeit zurück. Es gibt keinen guten Grund, es zu entfernen. –
Nun Rob, der Grund, warum ich CRT entfernte, ist, weil ich mein eigenes Betriebssystem schreibe und PE-Dateien unterstützen möchte (derzeit unterstütze ich nur elf), es ist ein kleiner Kernel und ich werde später an meinem eigenen CRT arbeiten, für jetzt alles was ich brauche ist eine kleine PE-Binärdatei wie wenn sie mit Nasm oder ähnlichem kompiliert wurde. –