C ++(VC2010)帮助将控制台应用程序转换为隐藏的Windows应用程序吗?

Emendelson

我已经阅读了十几页的内容,解释了如何将Win32控制台应用程序转换为Windows应用程序,而无需短暂打开和关闭控制台窗口即可运行它,但是对于起初的工作我还是个新手。

例如,在VC2010中,我对此处描述的项目属性进行了两项更改:

将控制台应用程序转换为Windows应用程序

并将Main更改为WinMain,但当然从编译器收到了错误消息。

在其他页面之后,我还尝试创建控制台应用程序,然后在Win32应用程序向导中,将“应用程序类型”更改为Windows应用程序,但是我不知道下一步该怎么做。我尝试将int Main更改为int CALLBACK WinMain,但是当然也不起作用。

有谁可以帮助初学者吗?这是我认为是我的代码编辑的相关部分:完整的代码,对于任何想知道这是什么目的的人,都在这里:

https://www.dropbox.com/s/1h8x1k2zv0lc5d1/vPasteCPlus.txt?dl=0

#include <stdafx.h>
#include <windows.h>
#include <iostream>
#include <fstream>
#include <codecvt> // for wstring_convert
#include <locale>  // for codecvt_byname
using namespace std;

// helper to get path to this application
string ExePath() {
char buffer[MAX_PATH];
GetModuleFileNameA( NULL, buffer, MAX_PATH );
string::size_type pos = string( buffer ).find_last_of( "\\/" );
return string( buffer ).substr( 0, pos);
}

int main(int argc, char* argv[])
{
    // get the command-line argument if any, and do various things
} 

再次,对这个初学者的问题表示歉意。我对C ++的唯一经验是编写控制台应用程序,我们将不胜感激收到任何建议。

格里沙

好的,因此您已经打开了Visual Studio。并且您有Solution Explorer(如果没有,View-> Solution Explorer)。

首先,要制作Windows应用程序,应将入口点从main()(C ++标准)更改为Windows特定的WinMain()有关更多详细说明,请参见msdn 因此,您将main()转到下一个(从文档中复制粘贴):

int CALLBACK WinMain(
  _In_ HINSTANCE hInstance,
  _In_ HINSTANCE hPrevInstance,
  _In_ LPSTR     lpCmdLine,
  _In_ int       nCmdShow)
{
    return 0;
}

当然,您应该包含<Windows.h>,因为Windows提供了它自己的API来与系统一起使用(例如LPSTRtype)。简而言之,您完成了编译器编译程序所需的全部工作。您可以构建您的解决方案(Build-> Build Solution)...这将导致linker错误:

error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

同样,编译器完成了您想要的所有操作,并将源文件编译为.obj,但是,因为您的项目是为Console应用程序配置的,因此linker需要Console应用程序的标准入口点-main在我们的案例中找不到(解决)它,因为我们将main更改为WinMain。为了使链接器开心,您应该告诉它:

  • 右键点击里面的项目 Solution Explorer
  • 然后点击Properties解决方案资源管理器属性
  • 转到Configuration Properties-> Linker->System并设置SubSystemWindows链接器的子系统配置

尝试再次构建您的应用程序,瞧-您已经没有链接器错误,因为您的链接器现在知道它需要生成Windows应用程序并找到Windows入口点:WinMain()

关于这个:

// get the command-line argument if any, and do various things

您应该使用的lpCmdLine参数WinMain()但是请小心,如果您像这样运行程序(例如,so.exe):

so.exe arg1 arg2

lpCmdLinearg1 arg2字符串。您可以做很多事情来获取arg1arg2asn数组(如main()argv(带有argc)),但是您可以探索:

和相关内容(例如Windows上的wchar_t)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 c# 控制台应用程序转换为 c# windows 窗体应用程序

来自分类Dev

将C#控制台应用程序转换为ASP.NET MVC应用程序

来自分类Dev

C#将控制台应用程序转换为服务

来自分类Dev

C#将Windows窗体应用程序添加到控制台应用程序

来自分类Dev

将C ++控制台应用程序更改为Windows子系统

来自分类Dev

需要帮助来了解我的C#控制台应用程序中的动态菜单

来自分类Dev

C ++ GUI和控制台应用程序

来自分类Dev

安排C#控制台应用程序

来自分类Dev

C ++控制台应用程序立即退出?

来自分类Dev

Gmail控制台应用程序C#

来自分类Dev

使C#控制台应用程序与wpf交互

来自分类Dev

随机统计应用程序?(控制台C#)

来自分类Dev

河内C#塔控制台应用程序。

来自分类Dev

使文字从C控制台应用程序闪烁

来自分类Dev

C ++ GUI和控制台应用程序

来自分类Dev

C#控制台应用程序即服务

来自分类Dev

控制台应用程序 c# 舍入

来自分类Dev

VS 2017 控制台应用程序 (C#)

来自分类Dev

从其他C#控制台应用程序运行C#控制台应用程序

来自分类Dev

如何从C#中的控制台应用程序运行Web应用程序

来自分类Dev

C#控制台应用程序...析因应用程序代码

来自分类Dev

C ++控制台应用程序始终排在最前面吗?

来自分类Dev

从C#控制台应用程序枚举UWP MIDI API设备吗?

来自分类Dev

我可以在 C# 控制台应用程序中使用 Unicode 吗?

来自分类Dev

提交后隐藏控制台中的 Console.ReadLine 输入 - C# 控制台应用程序

来自分类Dev

在C#控制台应用程序中使用Windows 8 API(VideoCaptureDevices)

来自分类Dev

具有Raspberry Pi 2的Windows IoT上的Visual C ++控制台应用程序

来自分类Dev

Mac / Linux上的Windows控制台应用程序?C ++

来自分类Dev

Windows 8.1中无法打印C#控制台应用程序

Related 相关文章

  1. 1

    将 c# 控制台应用程序转换为 c# windows 窗体应用程序

  2. 2

    将C#控制台应用程序转换为ASP.NET MVC应用程序

  3. 3

    C#将控制台应用程序转换为服务

  4. 4

    C#将Windows窗体应用程序添加到控制台应用程序

  5. 5

    将C ++控制台应用程序更改为Windows子系统

  6. 6

    需要帮助来了解我的C#控制台应用程序中的动态菜单

  7. 7

    C ++ GUI和控制台应用程序

  8. 8

    安排C#控制台应用程序

  9. 9

    C ++控制台应用程序立即退出?

  10. 10

    Gmail控制台应用程序C#

  11. 11

    使C#控制台应用程序与wpf交互

  12. 12

    随机统计应用程序?(控制台C#)

  13. 13

    河内C#塔控制台应用程序。

  14. 14

    使文字从C控制台应用程序闪烁

  15. 15

    C ++ GUI和控制台应用程序

  16. 16

    C#控制台应用程序即服务

  17. 17

    控制台应用程序 c# 舍入

  18. 18

    VS 2017 控制台应用程序 (C#)

  19. 19

    从其他C#控制台应用程序运行C#控制台应用程序

  20. 20

    如何从C#中的控制台应用程序运行Web应用程序

  21. 21

    C#控制台应用程序...析因应用程序代码

  22. 22

    C ++控制台应用程序始终排在最前面吗?

  23. 23

    从C#控制台应用程序枚举UWP MIDI API设备吗?

  24. 24

    我可以在 C# 控制台应用程序中使用 Unicode 吗?

  25. 25

    提交后隐藏控制台中的 Console.ReadLine 输入 - C# 控制台应用程序

  26. 26

    在C#控制台应用程序中使用Windows 8 API(VideoCaptureDevices)

  27. 27

    具有Raspberry Pi 2的Windows IoT上的Visual C ++控制台应用程序

  28. 28

    Mac / Linux上的Windows控制台应用程序?C ++

  29. 29

    Windows 8.1中无法打印C#控制台应用程序

热门标签

归档