.net framework 4.5 使用c++编写窗体(WinForm)应用程序

装了Visual Studio 2013,准备用熟悉的  .net c++写WinForm程序,发现创建项目时,Visual C++ -》CLR选项,没有Windows窗体应用程序。于是尝试自己配置

首先创建一个Visual C++ CLR空项目,名称为Test

1、创建完成后,打开项目属性选项卡,“通用属性”-》“引用”-》“添加新引用” -》“程序集”,选择System和System.Windows.Form程序集。

这个步骤的作用,是程序可以引用WinForm窗体系列类

2、添加新建项,Visual C++-》UI-》Windows窗体,就命名为MainForm吧,作为程序显示的第一个窗体。

添加main.cpp(我个人习惯,将程序入口点放在main.cpp中,代码如下

 
  1. #include "MainForm.h"

  2.  
  3. int main()

  4. {

  5. System::Windows::Forms::Application::Run(gcnew Test::MainForm());

  6. return 0;

  7. }

 

4、生成、运行。应该看到MainForm窗体显示出来了。但是还有些瑕疵,就是出现了类似MSDOS的控制台窗口,如何不让这个窗口出现呢?

还得配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“所有选项”-》“子系统”-》“窗口(/SUBSYSTEM:WINDOWS)”

然后生成,发现链接错误,"无法解析的外部符号_WinMain@16"。

那好吧,我把main.cpp中的int main改为int WinMain

 
  1. #include "MainForm.h"

  2.  
  3. int WinMain()

  4. {

  5. System::Windows::Forms::Application::Run(gcnew Test::MainForm());

  6. return 0;

  7. }

运行。这回应该不显示类似MSDOS的控制台窗口了。

5、关闭MainForm窗体,退出程序。你会发现,程序异常崩溃了。

“托管调试助手“FatalExecutionEngineError” ......其他信息:  运行时遇到了错误。此错误的地址为 0x690d4191,在线程 0x5f4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。”

看来还是哪里配置不对

还是配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“高级”-》“入口点”,改为“main”

然后修改main.cpp代码,将WinMain改成main

 
  1. #include "MainForm.h"

  2.  
  3. int main()

  4. {

  5. System::Windows::Forms::Application::Run(gcnew Test::MainForm());

  6. return 0;

  7. }


生成运行,这回应该正常了

猜你喜欢

转载自blog.csdn.net/bruce135lee/article/details/81949214