我试图在不使用CRT的情况下构建控制台应用程序,或者在任何情况下都使用除kernel32.lib之外的任何其他导入.我得到了我的代码进行编译,但无法将链接器包装成几个问题:
unresolved external symbol @__security_check_cookie@4 unresolved external symbol "int __cdecl FreeLibrary(void *)" (?FreeLibrary@@YAHPAX@Z) unresolved external symbol "void * __cdecl LoadLibraryW(wchar_t *)" (?LoadLibraryW@@YAPAXPA_W@Z) unresolved external symbol "int (__cdecl*__cdecl GetProcAddress(void *,char *))(void)" (?GetProcAddress@@YAP6AHXZPAXPAD@Z) unresolved external symbol _wmainCRTStartup
FreeLibrary,LoadLibraryW和GetProcAddress我已经明确地引入了程序,而不是使用windows.h:
#pragma comment(lib, "kernel32.lib") typedef int(*FARPROC)(); void* LoadLibraryW( wchar_t* lpLibFileName ); FARPROC GetProcAddress( void* hModule, char* lpProcName ); int FreeLibrary( void* hLibModule );
我想我的原型有问题.然而,更大的问题是__security_check_cookie
和_wmainCRTStartup
,这显然有事情做与CRT.所以我想知道如何重写int wmain(int argc, wchar_t* argv[])
入口点的默认值,以及如何摆脱安全cookie.