Tôi đang cố gắng xây dựng một ứng dụng giao diện điều khiển mà không cần sử dụng CRT hoặc bất kỳ nhập nào khác so với kernel32.lib trong mọi trường hợp. Tôi nhận được mã của tôi để biên dịch, nhưng không thể quấn mối liên kết xung quanh một số vấn đề:Xây dựng ứng dụng bảng điều khiển không có CRT và tiêu đề mặc định?
unresolved external symbol @[email protected]
unresolved external symbol "int __cdecl FreeLibrary(void *)" ([email protected]@[email protected])
unresolved external symbol "void * __cdecl LoadLibraryW(wchar_t *)" ([email protected]@[email protected])
unresolved external symbol "int (__cdecl*__cdecl GetProcAddress(void *,char *))(void)" ([email protected]@[email protected])
unresolved external symbol _wmainCRTStartup
FreeLibrary, LoadLibraryW và GetProcAddress tôi đã đưa vào chương trình một cách rõ ràng, không sử dụng 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);
Tôi cho rằng có gì đó không ổn với nguyên mẫu của mình. Tuy nhiên, vấn đề lớn hơn là __security_check_cookie
và _wmainCRTStartup
, rõ ràng là có liên quan đến CRT. Vì vậy, tôi tự hỏi làm thế nào tôi sẽ đi về trọng số mặc định int wmain(int argc, wchar_t* argv[])
cho entrypoint, và làm thế nào để thoát khỏi bất cứ điều gì các cookie bảo mật.
Thực ra tôi đã thử chúng với tư cách là stdcalls, và nó không giải quyết được vấn đề. – anon6439