ano*_*439 7 c++ windows visual-studio-2008 visual-c++
我试图在不使用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
Run Code Online (Sandbox Code Playgroud)
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 );
Run Code Online (Sandbox Code Playgroud)
我想我的原型有问题.然而,更大的问题是__security_check_cookie和_wmainCRTStartup,这显然有事情做与CRT.所以我想知道如何重写int wmain(int argc, wchar_t* argv[])入口点的默认值,以及如何摆脱安全cookie.
_wmainCRTStartup是调用wmain()的函数
IIRC 它应该在您可以链接的某些 .o 文件中可用,请查看您的 lib 目录。
也许这也是有用的阅读:Reduce EXE and DLL Size with LIBCTINY.LIB(和 Matt Pietrek 岩石:-)