在使用C#进行窗体绘制的时候,经常需要调用别处的程序,显示到窗体中。
因此本节写一下关于调用.exe文件,以及传递参数在C++ 端接收的问题
1、System.Diagnostics.Process.Start()函数能够调用C++的文件,此方法比较丰富,可以传递不同的参数,同时也可以实现不同的目的,网上对其描写也比较丰富。我就不讲其余的了,就写一下我用的方法。
我使用次函数调用C++的.exe文件。并且传递参数。以下是我的代码
其中statue是获取的路径,传递到C++的int main()中 有兴趣的可以看一下我之前的文档,
System.Diagnostics.Process.Start(@"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\motion\Debug\motion.exe", status);
2、int main()接收C#传的参数
在以往中并没有使用过这种方式,因此在这里写一下。普通写C++程序的时候都是int main(),括号中并没有参数。
但是使用传参的话,需要对其进行改造一下,变成下面这种形式
int main(int argc,char *argv[])
{ //其中argc参数表示的存在几个参数,argv表示的是数组
}
能够有接收参数的前提条件后,就要对参数进行获取了
参数的位置第一个下表是文件的地址默认值是0;第二个才是你传递的值,下表值可以使用123等接收,下面是具体的代码
int main(int argc,char *argv[])
{
//fBackYardFire
if (argc == 0)
{ //0表示为此程序的地址
cout << argv[0];
}
else
{ //获取传递的路径,下标值为1
string path = argv[1];
//路径处理
string_replase(path, "\\", "\\\\");
}
}