这两个功能有什么区别?:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
Run Code Online (Sandbox Code Playgroud) 我试图理解如何用不同的入口点代替WinMainMicrosoft工具链中的工作.
我已经发现了这个问题并且它非常有用,但最后一个细节却在唠叨我.
我第一次Linker>Advanced>Entry Point在Visual Studio中更改了选项时,我将其设置为main错误,我的程序编译并运行正常.我后来意识到并重建了程序设置为mainCRTStartup,如链接问题中接受的答案所示,并没有发现任何不同.
所以,我的问题是:是否有任何差异之间的所有main和mainCRTStartup,如果是这样,有什么区别?
我跟着tuto:
http://zetcode.com/tutorials/gtktutorial/firstprograms/
它工作,但每次我双击可执行文件,有一个控制台,我不希望它在那里.
我如何摆脱那个控制台?
我试过这个:
add_executable(Cmd WIN32 cmd.c)
Run Code Online (Sandbox Code Playgroud)
但得到了这个致命的错误:
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
Cmd.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)
使用gcc直接工作:
gcc -o Cmd cmd.c -mwindows ..
Run Code Online (Sandbox Code Playgroud)
我猜这与入门函数有关:int main( int argc, char *argv[])但为什么gcc有效?
我怎样才能使用它cmake?
UPDATE
为方便起见,我这里粘贴源代码:
#include <gtk/gtk.h>
int main( int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
UPDATE2
为什么gcc -mwindows有效但add_executable(Cmd WIN32 cmd.c)不是?
也许这不是 …
我想在 Windows 上为我编写一个用于 OpenGL 的小窗口框架。我知道有很多好的窗口库,但我喜欢自己做。但是我有一个小问题,如果我想用 Win32 API 创建一个窗口,我需要像“hInstance”这样的参数......我如何在 Window.class 中获得这个需要的变量?其他 Window 库是如何做到的?
我有一个wmain()用作入口点的工作 Visual Studio 项目。我想main()改用。
如果我只是将函数签名更改为int main(),我会得到:
错误 LNK2019:函数“void __cdecl mainCRTStartupHelper(struct HINSTANCE__ *,unsigned short const *)”中引用了未解析的外部符号 _wmain
我需要更改什么选项才能使链接成功?
如果您尝试将构建类型更改Console (/SUBSYSTEM:CONSOLE)为Windows (/SUBSYSTEM:WINDOWS),则会收到错误,抱怨输入点WinMain丢失:

我认为解决这个问题的最佳方法是int main(int, char**)从WinMain以下方面调用您的法线:
#ifdef _WINDOWS_
INT WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, INT nCmdShow)
{
return main(0, NULL);
}
#endif
Run Code Online (Sandbox Code Playgroud)
问题是ImageMagick正在使用控制台参数(我计划将来也使用它们):
所以过去NULL并且0可能不是一个好主意.如何将WinMain参数转换为mainarugments?
嗨我必须用C++运行程序,我想确保程序执行时,它以特定的大小/尺寸打开控制台,以便我的程序中的显示是正确的.我需要帮助,因为我不知道该怎么做.我正在使用Dev C++ 5.42(Orwell).我试过用
#include<iostream>
#include<windows.h>
using namespace std;
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
int main(){
cout<<"Hello World";
}
Run Code Online (Sandbox Code Playgroud)
并得到一个错误
[Error] expected constructor, destructor, or type conversion before '(' token
Run Code Online (Sandbox Code Playgroud)
我是初学者,因此我对这些事情知之甚少.