在项目开发的过程中,不可避免的遇到这种情况:主程序由于算法的第三方库使用的目标平台需为X86的,但是在调用别家公司的程序或者是其他程序驱动不能为X86的(使用x64或者Any cup的没问题)。
我遇到的连接oracle数据库报异常“尝试加载Oracle客户端库时引BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行将出此问题”。这就不由的抱怨一句oracle数据库真的是事多呀,一大堆的问题。
出现这种情况该怎么做呢,两边的平台要求是不一样的,不能修改。
第一种方法:使用其他的不用区分目标平台的库进行连接;
第二种方法:编写一个exe程序,其对接的操作都在这个程序中实现,并由主程序调用。
下面我们就来说一下第二种方法的实现。
1、新建一个“控制台应用程序”-- 在项目启动类文件Program中Main()函数中接收传递来的参数;代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public
class
Program
{
public
static
void
Main(
`string`[] args)
{
if
`(args.Length > 0 && !string
.IsNullOrEmpty(args[0]))`
{
string
num = args[0];
`//获取传递过来的参数`
//DSCommuncationInfo 自定义的类;GetOracleData:连接Oracle数据库和获取数据函数
DSCommuncationInfo info = GetOracleData(num);
if
(info !=
null
`)`
{
//序列化成字符串数组
string
result = SerializedXMLHelper.Serializer(info);
//将指定的字符串值(后跟当前行终止符)写入标准输出流。
Console.WriteLine(result);
}
}
}
}
2、主程序调用exe时,使用进程的方式把exe启动,调用代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public
void
StartExternalProgram(
`string
examinerNo)`
{
//这里在dll程序中调用exe,路径是获取dll所在路径
string
exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string
exeName =
"CterHisExe.exe"
`;`
string
fileName = Path.Combine(exePath, exeName);
//使用进程
Process myProcess =
new
Process();
myProcess.StartInfo.UseShellExecute =
false
`;`
myProcess.StartInfo.RedirectStandardOutput =
true
`;`
myProcess.StartInfo.FileName = fileName;
myProcess.StartInfo.CreateNoWindow =
true
`;`
//传参,参数以空格分隔,如果某个参数为空,可以传入“”
myProcess.StartInfo.Arguments = examinerNo;
p.StartInfo.WorkingDirectory = exePath;
`//设置要启动的进程的初始目录`
myProcess.Start();
`//启动`
myProcess.WaitForExit(15000);
`//等待exe程序处理完,超时15秒`
string
xmldata = myProcess.StandardOutput.ReadToEnd();
`//读取exe中内存流数据`
if
(!
`string`.IsNullOrEmpty(xmldata))
{
//自己实现的序列化
var info = SerializedXMLHelper.Deserializer(xmldata);
}
}
虽然这种方法比较复杂,但是也是解决平台不兼容的可行方法之一。
Process.Start()无法启动exe程序的问题:
1、可能是参数不是绝对路径,exe的路径地址不正确。
2、如果在外部直接运行exe程序没有问题,而当这个程序中有配置文件,或在启动的时候需要读取其他文件时,需要设置StartInfo的WorkingDirectory属性为应用程序的目录。
到此这篇关于C#调用EXE文件实现传参和获取返回结果的文章就介绍到这了,更多相关C#调用EXE文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
原网址: 访问
创建于: 2023-02-28 15:23:05
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论