visual studio编写的exe程序不能在没装vs的电脑上运行

本文提供了多种解决VC++程序在不同机器上运行时缺失MSVCR等DLL文件的方法,包括拷贝必需的DLL文件、修改编译选项、使用静态链接、捆绑安装VC++运行时库及调整项目属性。
其实有很多的解决办法呀,如下:(一般你看是具体什么提示然后,使用相应的提示到G.cn或百度找答案即可.....),下面的方法可参考使用...
1).在C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86   \Microsoft.VC80.DebugCRT 下找到了下列文件:
        msvcm80d.dll
        msvcp80d.dll
        msvcr80d.dll
        Microsoft.VC80.DebugCRT.manifest

   把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。

    其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!

  2).修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不    再需要VC的dll了。
  
  3). 工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
     这样生成的exe文件应该就可以在其他机器上跑了。

  4).在vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装

  5).修改项目属性的编译开关 
      工程-->属性-->配置属性-->C/C++-->代码生成-->运行时库 修改为Multi-threaded(/MT)
    
   修改了Runtime类型以后,需要将MFC的编译类型也改成静态库
       工程-->属性-->配置属性-->常规-->MFC的使用  修改为:在静态库中使用MFC; 
          
   一部分情况下在这步就能解决问题,另外一部分情况会遇见如下情况,编译器报错:储如:"再次定义"
   解决方法如下:
   工程-->属性-->配置属性-->链接器-->输入-->附加依赖项 中加入相应的*.lib
        (如:加入nafxcw.lib,libcpmt.lib )这一般根据你程序所报的错进行修改;
   工程-->属性-->配置属性-->链接器-->输入-->特定的库
         (如:加入nafxcw.lib,libcpmt.lib )
     
   这样链接程序就不会先按照默认顺序来连接这两个库文件,而是在最后在加入对他们的引用. 

下面是一张可能发生冲突的列表 若要使用此运行时库 请忽略这些库 
  
单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib   
多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib   
使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib   
调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib   
调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib   
使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
<think>嗯,用户现在想用Visual Studio桌面应用程序写一个能够存储文本的EXE运行程序。首先,我需要确定用户的技术背景。可能他们有一定的编程基础,但可能对Windows桌面开发不太熟悉,特别是使用Visual Studio。用户之前的问题是关于文件扩展名的,现在转向具体的应用程序开发,可能他们正在学习如何将文本存储到文件中,或者想创建一个简单的文本保存工具。 接下来,我需要考虑用户可能需要的功能。存储文本的EXE程序,可能是一个简单的窗口应用程序,带有文本框和保存按钮。用户可能希望点击按钮后,将文本框中的内容保存到本地文件中。因此,需要选择合适的技术栈。Visual Studio支持多种桌面开发框架,比如Windows Forms、WPF、UWP等。考虑到用户可能更倾向于简单易用的方案,Windows Forms可能是最合适的选择,因为它的拖拽控件和事件处理比较直观,适合快速开发。 然后,我需要设计步骤。首先是创建项目,确保用户使用的是Windows Forms应用模板。然后设计界面,添加TextBox和Button控件。接下来是编写保存逻辑,这里需要用到System.IO命名空间中的File类,特别是WriteAllText方法。同时要考虑异常处理,比如路径无效或权限问题,所以需要try-catch块来捕捉可能的异常,并提示用户。 另外,用户可能不知道如何在Visual Studio中调试和生成EXE文件,所以需要说明如何运行程序以及生成的位置。还可能需要注意.NET框架的版本,确保用户创建的是.NET Framework项目而非.NET Core,因为后者可能有不同的部署方式。同时,提醒用户如果需要更复杂的功能,比如选择保存路径或文件名,可以扩展功能,比如使用SaveFileDialog控件,但当前示例保持简单,只保存到固定路径。 此外,用户可能遇到的问题包括路径错误、文件权限不足,或者不知道如何找到生成的EXE文件。因此,在代码示例中,最好使用绝对路径,并提示用户修改为自己的路径。同时,在注意事项中说明需要管理员权限的情况,或者如何调整保存路径为用户的文档目录,避免权限问题。 最后,确保回答结构清晰,步骤明确,代码正确,并且用中文简洁地解释每个部分的作用。这样用户即使初次接触Windows Forms也能按照步骤完成程序的创建和测试。</think>好的!以下是使用 **Visual Studio** 创建能够存储文本的 **Windows桌面EXE程序** 的分步指南(基于C#和Windows Forms): --- ### **步骤1:创建新项目** 1. 打开Visual Studio → 选择 **“创建新项目”** 2. 搜索模板 → 选择 **“Windows Forms应用(.NET Framework)”** → 设置名称(如`TextSaver`)→ 点击 **“创建”** --- ### **步骤2:设计界面** 1. 从工具箱拖拽以下控件到窗体: - **TextBox**(文本框,用于输入内容)→ 设置 `Multiline=True` 以支持多行 - **Button**(按钮,命名为`btnSave`,文本改为“保存”) - **SaveFileDialog**(保存文件对话框控件) ![示例界面](https://via.placeholder.com/300x200?text=TextBox+%2B+Save+Button) --- ### **步骤3:编写保存代码** 双击按钮 `btnSave` → 进入代码编辑界面 → 添加以下代码: ```csharp using System.IO; using System.Windows.Forms; private void btnSave_Click(object sender, EventArgs e) { // 配置保存对话框 SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.Filter = "文本文件|*.txt"; // 限制保存为.txt文件 saveDialog.Title = "保存文本内容"; if (saveDialog.ShowDialog() == DialogResult.OK) { try { // 获取用户输入内容并保存到文件 string content = textBox1.Text; File.WriteAllText(saveDialog.FileName, content); MessageBox.Show("保存成功!", "提示"); } catch (Exception ex) { MessageBox.Show($"保存失败:{ex.Message}", "错误"); } } } ``` --- ### **步骤4:运行与生成EXE** 1. 按 **F5** 运行程序 → 输入文本 → 点击“保存”选择路径 2. 生成EXE文件: - 菜单栏 → **“生成”** → **“生成解决方案”** - EXE路径:`项目文件夹\bin\Debug\TextSaver.exe` --- ### **关键功能解释** 1. **SaveFileDialog**:弹出系统保存对话框,用户可自定义文件名和路径 2. **File.WriteAllText()**:将文本框内容写入指定路径的文件 3. **异常处理**:防止因路径无效或权限问题导致程序崩溃 --- ### **扩展功能(可选)** - 添加 **“打开文件”** 按钮:用 `OpenFileDialog` 和 `File.ReadAllText()` - 支持更多格式:修改 `Filter` 属性(如 `.csv`、`.md`) - 加密文本:在保存前对内容进行加密处理 --- ### **注意事项** - 确保目标路径有写入权限 - 若需兼容旧系统,选择 `.NET Framework 4.x` 版本 - 生成的EXE可在其他Windows电脑直接运行(无需安.NET框架)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值