none
vs 2010 express项目编译问题 RRS feed

  • 问题

  • 我想做图形界面程序,使用的是外部的Qt库,我在项目属性里添加了相关的文件搜索路径,程序能正常编译出来,但是生成的程序总是带有一个控制台的窗口,怎么去掉啊?我建立的是空项目。
    2014年9月17日 10:30

答案

  • 你好,

    根据你的描述,你可以检查一下你是否将子系统设置为了“Windows” 而不是 “Console”。

    具体查看步骤:Project Properties->Linker->System->

    同时因为你建的是图形界面程序,你应该确保你的入口函数是

    int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

    而不是 _tmain(int argc, _TCHAR* argv[])

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月18日 3:24

全部回复

  • 你好,

    根据你的描述,你可以检查一下你是否将子系统设置为了“Windows” 而不是 “Console”。

    具体查看步骤:Project Properties->Linker->System->

    同时因为你建的是图形界面程序,你应该确保你的入口函数是

    int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

    而不是 _tmain(int argc, _TCHAR* argv[])

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月18日 3:24
  • 你好!

    我修改了子系统为windows,但是连接时发生 LIN2001,无法解析外部符号。我是初学者,

    不太懂程序的入口函数,你说的入口函数是不是操作系统提供的程序接口(API),我在代码中主函数是 int main(),然后头文件中包含了很多第三方的,连接时应该也是使用Qt中的lib,入口函数需要我自己改吗?怎么改

    难道使用int main的只能做控制台程序吗?

    代码如下

    #include<QtGui/QApplication>
    #include<QtGui/Qwidget>
    #include<QtGui/qlabel.h>
    #include<QtGui/qpushbutton.h>
    #include<QtGui/QVBoxLayout>
    #include<QtCore/qtextcodec.h>
    int main(int argc,char *argv[])
    {
    	QApplication jin(argc,argv);
    	QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));
    	QWidget *wei=new QWidget;
    	QLabel lin(wei);
    	lin.setText(QObject::tr("!!!!!!!!!!!!"));
    	QPushButton *btn=new QPushButton(QObject::tr("关闭"),wei);
    	QVBoxLayout *layout=new QVBoxLayout;
    	layout->addWidget(&lin);
    	layout->addWidget(btn);
    	wei->setLayout(layout);
    	QObject::connect(btn,SIGNAL(clicked()),wei,SLOT(close()));
    	wei->show();
    	return jin.exec();
    }

    2014年9月18日 4:30
  • 你好,

    既然你的程序是windows GUI 程序而且子系统设为了windows, 那么你就需要将入口函数写为相应的WinMain 或者wWinMain。

    关于入口函数与子系统的一些细节,你可以参考MSDN文档进行更多的了解:

    /ENTRY (Entry-Point Symbol)

    /SUBSYSTEM (Specify Subsystem)

    至于如何写一个WinMain 函数,具体要求请按照MSDN对于WinMain 函数的定义进行:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633559(v=vs.85).aspx

    更多的关于QT的问题,您也可以去QT相关论坛进行咨询。

    http://qt-project.org/forums


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月19日 1:44