在win7系统下开发的C# winform项目 打包后 在windows2003系统下无法打开,总是爆出如图所示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在win7系统下开发的C# winform项目 打包后 在windows2003系统下无法打开,总是爆出如图所示相关的知识,希望对你有一定的参考价值。
win7 自带.net4.0win2003应该是.net3.5.而且还不知道你是不是装过。
所以要么你在win7上用.net3.5来编译,要么给你的win2003装个.net4.0.追问
我在win2003下装了4.0后就爆出这个问题 不装是完全打不开的
追答你用3.5编译下试试呢
现在这个异常明显就是找不到dll,最有可能是.net版本不对造成的。net Framework4.0版本挺多的,要保证你在win2003上装的和你开发用的版本一直才行。所以建议还是编译成3.5版的。
另外一个可能是用了第三方控件或者dll,但是没有拷过来。
谢谢 问题解决了
参考技术A Win7系统上的东西用到Windows2003系统上肯定不能用啦 差别那么大追问好吧 你的回答跟没有回答没什么区别 不过 还是谢谢
追答那你要问什么嘛
追问我想问出现这个问题是什么原因造成的 该怎么解决
追答都说了 系统不同肯定用不了
第一个C# Winform实例
前面我们准备好了相关的库,现在开始搭建环境,本人自动化行业,就用Windorm开发吧,例子仅仅做引导,希望大家能深入。VS版本VS2017
1:打开VS建立一个WInform 项目。拉入两个控件,groupbox,picturebox放到左侧,右侧也拉入一个groupbox,里面放入两个button.一个用来选择图片,一个用来测试二值化的效果。UI效果如下:
2:本人系统win10,64位。所以用OpencvSharp的64位库。先在项目里添加引用:(net461版本);然后在类里添加 using OpenCvSharp;最后根据个人项目平台,选择新建X64或者X86,用anycpu 容易出问题。好了,经过上面的准备,OpencvSharp相关库所有的东西都可以调用了。
3:图像少不了显示,我们新建一个类,用来管理OpencvSharp的图片显示。
public class SharpWindows [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", SetLastError = true)] private static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent); private PictureBox pictureBox; private Control Parentform; public Window Opencvwin; public SharpWindows(PictureBox _pictureBox,string winname) pictureBox = _pictureBox; Cv2.NamedWindow(winname); Opencvwin = new Window(winname, WindowMode.FullScreen); Cv2.SetWindowProperty(Opencvwin.Name, WindowProperty.Fullscreen, 1); IntPtr Childwin = FindWindow(null, winname); SetParent(Childwin, _pictureBox.Handle); Parentform = Control.FromHandle(_pictureBox.Handle); public void Showimg(Mat img) try int width = Parentform.Width; int height = Parentform.Height; Cv2.ResizeWindow(Opencvwin.Name, width, height); Cv2.MoveWindow(Opencvwin.Name, Parentform.Left, Parentform.Top); Cv2.SetWindowProperty(Opencvwin.Name, WindowProperty.Fullscreen, 1); Opencvwin.ShowImage(img); catch(Exception ex) throw (ex);
4.在winform主UI里面初始化一个OpencvSharp的显示窗口:(同时创建一个Mat变量)
SharpWindows Imgwindow; Mat rawimg; public OpencvSharpWindow() InitializeComponent(); Imgwindow = new SharpWindows(this.pictureBox1, "MainUIwindow");
5.两个button点击事件:
private void button_Openpic_Click(object sender, EventArgs e) try var filename= OpenfileDlg(); if(filename!=null&& filename!="") Mat img = Cv2.ImRead(filename); Imgwindow.Showimg(img); rawimg = img.Clone(); img.Dispose(); catch(Exception ex ) throw (ex); private static string OpenfileDlg(string Defaultpath = null) OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "请选择要打开的文件"; //多选 ofd.Multiselect = true; //初始目录 ofd.InitialDirectory = Defaultpath; //设定文件类型 // ofd.Filter = "*.bmp | *.jpg"; ofd.ShowDialog(); //获得在打开文件对话框中选择的文件的路径 string path = ofd.FileName; return path; private void button_Test_Click(object sender, EventArgs e) try if(rawimg!=null) //转灰度 Mat grayimg; if (rawimg.Channels()==3) grayimg = rawimg.CvtColor(ColorConversionCodes.BGR2GRAY); else grayimg = rawimg.Clone(); Imgwindow.Showimg(grayimg); //bin double dvalue = 0; double.TryParse(textBox_ThreshValue.Text, out dvalue); if(dvalue==0) dvalue = 10; Mat binimg = grayimg.Threshold(dvalue, 255, ThresholdTypes.Binary); Imgwindow.Showimg(binimg); grayimg.Dispose(); binimg.Dispose(); catch(Exception ex) throw (ex);
6.代码敲完。剩下我们测试一下效果:
点击打开图片按钮,选择需要显示的图片,我网上下载了一张,UI那里就有显示了,还是很直观方便的。
接着我们测试一下简单的二值化效果。在text文本框里分别填入50,100,200,220效果分别如下:
本次实例结束。希望大家动手操作,这样才能学习到东西。
各位,如果需要我的源码,请留言,谢谢!
以上是关于在win7系统下开发的C# winform项目 打包后 在windows2003系统下无法打开,总是爆出如图所示的主要内容,如果未能解决你的问题,请参考以下文章
c# 开发的winform软件 怎么样使其只能在xp系统下运行