提问人:user2511688 提问时间:6/22/2013 更新时间:7/12/2017 访问量:2140
删除了 C 运行时库,我收到了一些未解析的外部问题
Removed the C runtime library, and i am receiving some unresolved externals
问:
嘿,伙计们,我正在开发一个应用程序,我删除了 CRT 以节省可执行文件中的大量空间并使其尽可能小:)问题是,当我删除 CRT 时,我还收到了大量未解决的外部错误,我只需添加一些运算符即可删除其中的大部分错误:
void * __cdecl operator new(unsigned int bytes) {
return HeapAlloc(GetProcessHeap(), 0, bytes);
}
void __cdecl operator delete(void *ptr) {
if(ptr) HeapFree(GetProcessHeap(), 0, ptr);
}
extern "C" int __cdecl __purecall(void) {
return 0;
}
extern "C" const DWORD_PTR __security_cookie = 0xE64EBB40;
extern "C" void __fastcall __security_check_cookie(DWORD_PTR cookie) {
if (cookie != __security_cookie)
__asm int 3;
}
但是现在我被最后三个错误困住了,我不知道如何解决它们,我真正好奇的一个是_memmove错误?我没有在代码中的任何地方使用 memmove 运算符,所以我不知道为什么我会收到它:P
至少这里有错误,我会非常期待你的回答。
Error 2 error LNK2001: unresolved external symbol "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) C:\Users\Fluttershy!\documents\visual studio 2012\Projects\PincelStub\PincelStub\PincelStub.obj
Error 3 error LNK2001: unresolved external symbol "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) C:\Users\Fluttershy!\documents\visual studio 2012\Projects\PincelStub\PincelStub\PincelStub.obj
Error 4 error LNK2001: unresolved external symbol _memmove C:\Users\Fluttershy!\documents\visual studio 2012\Projects\PincelStub\PincelStub\PincelStub.obj
答:
1赞
Massa
6/22/2013
#1
VC++ 可能在内部使用它们(例如,前两个用于发出错误条件的信号,以及在普通的旧分配中移动内存块)。前两个,我只定义为 ,但至于最后一个,我会尝试摆弄优化选项(关于“内在函数”等)或完全重新实现它(而不仅仅是存根)。_memmove
struct
{}
0赞
Balog Pal
6/22/2013
#2
我不确定你为什么要朝自己的腿开枪,但无论如何。CRT 的源代码就在那里,因此您可以搜索它以查找丢失的内容并复制。 memmove 函数应该是显而易见的。另外两个看起来与标准异常有关。
评论