背景:
我的应用程序没有CRT,因为它必须是便携式的,并且很小。
问题:
当我在Windows XP虚拟机上运行我的应用程序时,我的CreateProcess()
函数失败,我需要在GetLastError()
中显示DWORD
MessageBox()
而不使用任何内容CRT,
如何在我的程序中手动实现sprintf()
函数,将DWORD
类型转换为char buffer
以显示在MessageBox()
函数中以获取错误类型,因此,我可以解决问题。
我已经实现了我自己的memset()
功能
extern "C" void * __cdecl memset(void *, int, size_t);
#pragma function(memset)
void * __cdecl memset(void *pTarget, int value, size_t cbTarget) {
unsigned char *p = static_cast<unsigned char *>(pTarget);
while (cbTarget-- > 0) {
*p++ = static_cast<unsigned char>(value);
}
return pTarget;
}
我不确定如何实现自定义sprintf()
功能
谢谢
答案 0 :(得分:4)
wsprintf在Windows中可用,没有CRT的事件。只需#include windows.h
答案 1 :(得分:2)
如果速度不是您所关心的,您可以使用kernel32.dll提供的RtlMoveMemory和wsprintf进行memcpy(memmove)和sprintf(实际上不是那么慢,只是无法进行链接时优化)。