感觉这样还不如用汇编。。。
便携性的话,静态编译就够用了。兼容性的话,去掉运行库提升有限,直接降编译器版本或者用MinGW效果更好。
#ifdef _DEBUG
#pragma comment (linker, "/nodefaultlib:msvcrtd.lib")
#else
#pragma comment (linker, "/nodefaultlib:msvcrt.lib")
#endif
int __cdecl wWinMainCRTStartup() {
STARTUPINFO info;
info.cb = sizeof(STARTUPINFO);
GetStartupInfo(&info);
int ret = wWinMain(GetModuleHandle(NULL),
0,
GetCommandLine(),
info.dwFlags & STARTF_USESHOWWINDOW ? info.wShowWindow : SW_SHOWDEFAULT);
ExitProcess(ret);
return ret;
}
void* __cdecl malloc(ULONG_PTR uSize) {
return (void *)HeapAlloc(GetProcessHeap(), 0, uSize);
}
void __cdecl free(LPVOID pMemBlock) {
HeapFree(GetProcessHeap(), 0, (LPVOID)pMemBlock);
}
#pragma function(memcpy)
void* memcpy(void * dst, const void * src, size_t count)
{
void * ret = dst;
#if defined (_M_IA64)
{
extern void RtlMoveMemory(void *, const void *, size_t count);
RtlMoveMemory(dst, src, count);
}
#else /* defined (_M_IA64) */
/*
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
#endif /* defined (_M_IA64) */
return(ret);
}
#pragma function(memset)
void* __cdecl memset(void* src, int c, size_t count) {
char *tmpsrc = (char*)src;
while (count--)
*tmpsrc++ = (char)c;
return src;
}
extern "C" void __cdecl __imp__invalid_parameter_noinfo() {
}
extern "C" void __cdecl __imp__errno() {
}
[修改于 8年10个月前 - 2016/06/17 19:11:11]
感觉这样还不如用汇编。。。
便携性的话,静态编译就够用了。兼容性的话,去掉运行库提升有限,直接降编译器版本或者用MinGW效果更好。
gcc+自备源码,到目标机运行的时候再编译(只是gcc还要安装不易携带) 或者。。。使用网页应用,但是不适合复杂计算等
引用 drzzm32:直接codeblocks绿色版。。。
gcc+自备源码,到目标机运行的时候再编译(只是gcc还要安装不易携带)
或者。。。使用网页应用,但是不适合复杂计算等
引用 amo:个人用vc++2005比较多→_→其实主要是因为vc6在win7中用着不爽→_→不过现在顶多用到vs2010了吧,谁会用xp sp2之前的系统呢
VC6.0一直用的很high的路过……
我用的都是比较底层的东西,没有花里胡哨的,所以用一个老的编译器,直接就不用考虑不同的客户会用什么版本的windows了
200字以内,仅用于支线交流,主线讨论请采用回复功能。