我需要删除我的项目的变形。所以我禁用CRT等,但它给了一些错误说无法解析的外部符号malloc /免费。 的错误是:无法解析的外部符号__imp__calloc
LNK2001: unresolved external symbol __imp__memcpy
我该如何解决这些符号? 没有在我的代码中使用memcpy。我不使用例如RtlCopyMemory的例程。相反,我已经做了我自己的函数内联汇编
__declspec(naked) void* __stdcall _memcpy(void *dst, const void *src,
int length)
{
__asm
{
push esi
push edi
push ecx
mov esi, dword ptr[esp+20]
mov edi, dword ptr[esp+16]
mov ecx, dword ptr[esp+24]
rep movsb
pop ecx
pop edi
pop esi
ret 12
}
}
它似乎仍然被调用的memcpy出于某种原因? 现在我已经通过将vcruntime.lib链接到我的程序来解决了我的问题...
可怕的想法。重新启用CRT和您需要的任何默认库,然后继续。 –
那么,如果你不打算链接传统上提供它们的库,你必须自己实现它们。如果你愿意,你可以在运行时使用GetProcAddress编写用于链接到win32函数的包装器,但如果你有更多的话,它不是一个有趣的过程。 –
为什么你想从你的项目中删除标准库? –