.net framework 4.5 使用c++编写窗体(WinForm)应用程序
2014-09-22 13:24
375 查看
装了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中,代码如下
4、生成、运行。应该看到MainForm窗体显示出来了。但是还有些瑕疵,就是出现了类似MSDOS的控制台窗口,如何不让这个窗口出现呢?
还得配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“所有选项”-》“子系统”-》“窗口(/SUBSYSTEM:WINDOWS)”
然后生成,发现链接错误,"无法解析的外部符号_WinMain@16"。
那好吧,我把main.cpp中的int main改为int WinMain
运行。这回应该不显示类似MSDOS的控制台窗口了。
5、关闭MainForm窗体,退出程序。你会发现,程序异常崩溃了。
“托管调试助手“FatalExecutionEngineError” ......其他信息: 运行时遇到了错误。此错误的地址为 0x690d4191,在线程 0x5f4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。”
看来还是哪里配置不对
还是配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“高级”-》“入口点”,改为“main”
然后修改main.cpp代码,将WinMain改成main
生成运行,这回应该正常了
首先创建一个Visual C++ CLR空项目,名称为Test
1、创建完成后,打开项目属性选项卡,“通用属性”-》“引用”-》“添加新引用” -》“程序集”,选择System和System.Windows.Form程序集。
这个步骤的作用,是程序可以引用WinForm窗体系列类
2、添加新建项,Visual C++-》UI-》Windows窗体,就命名为MainForm吧,作为程序显示的第一个窗体。
添加main.cpp(我个人习惯,将程序入口点放在main.cpp中,代码如下
#include "MainForm.h" int main() { System::Windows::Forms::Application::Run(gcnew Test::MainForm()); return 0; }
4、生成、运行。应该看到MainForm窗体显示出来了。但是还有些瑕疵,就是出现了类似MSDOS的控制台窗口,如何不让这个窗口出现呢?
还得配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“所有选项”-》“子系统”-》“窗口(/SUBSYSTEM:WINDOWS)”
然后生成,发现链接错误,"无法解析的外部符号_WinMain@16"。
那好吧,我把main.cpp中的int main改为int WinMain
#include "MainForm.h" int WinMain() { System::Windows::Forms::Application::Run(gcnew Test::MainForm()); return 0; }
运行。这回应该不显示类似MSDOS的控制台窗口了。
5、关闭MainForm窗体,退出程序。你会发现,程序异常崩溃了。
“托管调试助手“FatalExecutionEngineError” ......其他信息: 运行时遇到了错误。此错误的地址为 0x690d4191,在线程 0x5f4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。”
看来还是哪里配置不对
还是配置项目属性。打开项目属性选项卡。“配置属性”-》“链接器”-》“高级”-》“入口点”,改为“main”
然后修改main.cpp代码,将WinMain改成main
#include "MainForm.h" int main() { System::Windows::Forms::Application::Run(gcnew Test::MainForm()); return 0; }
生成运行,这回应该正常了
相关文章推荐
- 移动 WCF: 使用 .NET Compact Framework 编写 IM 应用程序
- .NET Framework 4.6 and 4.5 > 开发指南 > 使用 WCF 的面向服务的应用程序 > Windows Communication Foundation (WCF)
- 使用.net framework再发布的插件发布应用程序
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在N-Tier 或多层应用程序中使用ADO.NET Entity Framework
- 使用 Visual Studio 2005 为基于 Windows Mobile 的设备生成 .NET Compact Framework 应用程序
- 使用.net framework再发布的插件发布应用程序
- 从Oxite看使用了ADO.NET Entity Framework的应用程序的多层架构
- 使用 .NET Compact Framework 2.0 生成 Wi-Fi 发现应用程序
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 提高.NET Compact Framework 1.0应用程序的窗体加载性能
- 使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 使用 .NET Compact Framework 2.0 生成 Wi-Fi 发现应用程序
- Visual Studio 2008/.NET Framework 3.5 WinForm窗体运用程序发布(部署)
- 为 Microsoft .NET Framework 精简版创建多窗体应用程序框架
- 提高.NET Compact Framework 1.0应用程序的窗体加载性能
- 如何使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 在N-Tier 或多层应用程序中使用ADO.NET Entity Framework
- Visual Studio 2008开发新特性系列课程(10):使用Visual Studio 2008和.NET Compact Framework 3.5创建Mobile应用程序