Gtk*_*ker 8 c windows gtk cmake
我跟着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)不是?
也许这不是-mwindowscmake 的等价物?
小智 5
add_executable(Cmd WIN32 cmd.c)
告诉CMake这是一个Windows程序,它寻找WinMain而不是main.如果要查看正在使用的标志,可以运行make VERBOSE = 1.问题可能是你如何为gtk应用程序定义WinMain?我知道Qt,你链接在一个为你定义它的库中.
如果您希望程序以控制台模式(即函数)运行main,则必须在 MSVC 中的项目属性中指定它。您现在使用的是窗口模式下的项目(即WinMain您没有的函数,因此会出现错误)。
但是,如果您不想获得丑陋的控制台窗口,则需要使用窗口模式(即将您的main函数转换为适当的WinMain函数)。这样,您的普通窗口就将显示出来。
编辑:顺便说一句,你真的不应该将程序命名为“cmd”,这是 Windows 命令解释器的名称。
| 归档时间: |
|
| 查看次数: |
4357 次 |
| 最近记录: |