CN104679573A - 一种wpf和c++的交互方法 - Google Patents

一种wpf和c++的交互方法 Download PDF

Info

Publication number
CN104679573A
CN104679573A CN201510136829.9A CN201510136829A CN104679573A CN 104679573 A CN104679573 A CN 104679573A CN 201510136829 A CN201510136829 A CN 201510136829A CN 104679573 A CN104679573 A CN 104679573A
Authority
CN
China
Prior art keywords
interface
wpf
excutecall
algorithm
executive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510136829.9A
Other languages
English (en)
Other versions
CN104679573B (zh
Inventor
赖明钟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XIAMEN MAIKEMASHI ELECTRONIC INFORMATION TECHNOLOGY Co Ltd
Original Assignee
XIAMEN MAIKEMASHI ELECTRONIC INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by XIAMEN MAIKEMASHI ELECTRONIC INFORMATION TECHNOLOGY Co Ltd filed Critical XIAMEN MAIKEMASHI ELECTRONIC INFORMATION TECHNOLOGY Co Ltd
Priority to CN201510136829.9A priority Critical patent/CN104679573B/zh
Publication of CN104679573A publication Critical patent/CN104679573A/zh
Application granted granted Critical
Publication of CN104679573B publication Critical patent/CN104679573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开一种WPF和C++的交互方法,包括以下过程:步骤1:将C++的底层SDK接口进行调整,将所有的C++算法接口重新封装为ExcuteCall执行接口;步骤2:WPF和C++交互时,C++通过ExcuteCall执行接口与WPF进行通讯;步骤3:WPF接收ExcuteCall执行接口后,将其解析为封装前的C++算法接口,并进行相应的处理。使用本发明的方法,成功的精简了WPF和C++的交互接口数,极大的降低了应用和算法对接和测试的工作量。本发明将直接的接口封装修改为执行命令的方式,极大的减小了工作量。

Description

一种WPF和C++的交互方法
技术领域
本发明涉及计算机程序设计技术,具体是一种WPF和C++的交互方法。
背景技术
当前,应用程序界面部分多采用WPF(Windows Presentation Foundation)技术,底层采用C/C++开发。WPF是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework的一部分,它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。WPF是一套API函数库,WPF具有集成度高,界面风格好等优点。但是WPF的最大的“缺点”是无法直接和C/C++交互,中间需要托管C++将底层SDK接口重新封装,但重新封装工作量巨大,还会带来额外的巨大内存消耗。
发明内容
因此,针对上述的问题,本发明提出一种新的交互方法,将直接的接口封装修改为“执行”命令的方式,减小WPF和C/C++接口封装的工作量。
为了解决上述技术问题,本发明的一种WPF和C++的交互方法,包括以下过程:
步骤1:将C++的底层SDK接口进行调整,将所有的C++算法接口重新封装为ExcuteCall执行接口;
步骤2:WPF和C++交互时,C++通过ExcuteCall执行接口与WPF进行通讯;
步骤3:WPF接收ExcuteCall执行接口后,将其解析为封装前的C++算法接口,并进行相应的处理。
其中,步骤1封装为ExcuteCall执行接口的具体步骤如下:
步骤11:首先过滤掉底层SDK接口的非法字符,然后将C++算法接口(也就是执行“命令”)解析为函数体、输入图像、输出图像、输入变量和输出变量(这些变量的个数都可能是多个);
步骤12:将解析出来的信息生成一张函数接口表。
所述步骤12中,为了方便解析,将底层SDK接口重新调整,按照命名规则调整输入输出的参数顺序,然后在程序内部生成一张函数接口表。
步骤3中,WPF将接收到的ExcuteCall执行接口解析为封装前的C++算法接口,具体包括如下过程:接收到ExcuteCall执行接口后,按照括号、逗号进行拆分解析,然后根据解析的信息到函数接口表中查询,获取对应的C++算法接口中的每个变量的数据类型,对不同类型的变量分别处理(例如销毁、新建等)。
其中变量的数据类型包括6个类型:输入图像、输出图像、输入泛型序列、输出泛型序列、输入char*、输出char*。其中,对于输入图像,算法不做处理,对于输出图像,算法根据需要对其分配合适的内存,进行运算;输入参数(输入泛型序列、输入char*)不做处理,输出参数根据需要对其分配内存并处理。
从上面算法可知,无论哪种算法接口,WPF和算法进行交互时都是采用的ExcuteCall接口,这就将多种调用方式精简为1种。由上可知,使用本发明的方法,成功的精简了WPF和C++的交互接口数,极大的降低了应用和算法对接和测试的工作量。本发明将直接的接口封装修改为执行命令的方式,极大的减小了工作量。
具体实施方式
现结合具体实施方式对本发明进一步说明。
本发明提供一种WPF和C++的交互方法,将直接的接口封装修改为“执行”命令的方式,减小WPF和C/C++接口封装的工作量。其包括以下过程:首先将C++的底层SDK接口进行调整,将所有的C++算法接口重新封装为ExcuteCall执行接口;在WPF和C++交互时,C++通过ExcuteCall执行接口与WPF进行通讯;WPF接收ExcuteCall执行接口后,将其解析为封装前的C++算法接口,并进行相应的处理。
其中,底层SDK接口调整,例如进行如下表格的调整:
从上面表格可以看出,无论哪种算法接口,WPF和算法进行交互时都是采用的ExcuteCall接口,这就将多种调用方式精简为一种。算法需要将输入的字符串“命令”解析成对应的变量和函数,以MirrorImage为例:
为了保证算法“命令”的顺利执行,算法SDK需要过滤非法字符,然后将执行“命令”解析为函数体、输入图像、输出图像、输入变量、输出变量(这些变量的个数都可能是多个),为了方便解析,将“所有”的底层SDK接口重新调整,按照命名规则调整输入输出的参数顺序,并在程序内部生成一张函数接口表。接收到执行命令后,算法按照括号,逗号等拆分解析,然后到函数表中查询,获取对应算法中,每个变量的数据类型,对不同类型的变量分别处理(销毁、新建)。经过分析,底层SDK的接口数据类型一共有6种:
序号 类型 定义
1 输入图像 FV_I_OBJ
2 输出图像 FV_O_OBJ
3 输入泛型序列 FV_I_TUP
4 输出泛型序列 FV_O_TUP
5 输入char* FV_I_CP
6 输出char* FV_O_CP
对于输入图像,算法不做处理,对于输出图像,算法根据需要自己分配合适的内存,进行算法运算,输入参数不做处理,输出参数根据需要分配内存并处理。使用该方法,成功的精简了WPF和C++的交互接口数,极大的降低了应用和算法对接和测试的工作量。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

Claims (4)

1.一种WPF和C++的交互方法,包括以下过程:
步骤1:将C++的底层SDK接口进行调整,将所有的C++算法接口重新封装为ExcuteCall执行接口;
步骤2:WPF和C++交互时,C++通过ExcuteCall执行接口与WPF进行通讯;
步骤3:WPF接收ExcuteCall执行接口后,将其解析为封装前的C++算法接口,并进行相应的处理。
2.根据权利要求1所述的WPF和C++的交互方法,其特征在于:步骤1封装为ExcuteCall执行接口的具体步骤如下:
步骤11:首先过滤掉底层SDK接口的非法字符,然后将C++算法接口解析为函数体、输入图像、输出图像、输入变量和输出变量;
步骤12:将解析出来的信息生成一张函数接口表。
3.根据权利要求1所述的WPF和C++的交互方法,其特征在于:所述步骤12中,为了方便解析,将底层SDK接口重新调整,按照命名规则调整输入输出的参数顺序,然后在程序内部生成一张函数接口表。
4.根据权利要求2或3所述的WPF和C++的交互方法,其特征在于:步骤3中,WPF将接收到的ExcuteCall执行接口解析为封装前的C++算法接口,具体包括如下过程:接收到ExcuteCall执行接口后,按照括号、逗号进行拆分解析,然后根据解析的信息到函数接口表中查询,获取对应的C++算法接口中的每个变量的数据类型,对不同类型的变量分别处理。
CN201510136829.9A 2015-03-27 2015-03-27 一种wpf和c++的交互方法 Active CN104679573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510136829.9A CN104679573B (zh) 2015-03-27 2015-03-27 一种wpf和c++的交互方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510136829.9A CN104679573B (zh) 2015-03-27 2015-03-27 一种wpf和c++的交互方法

Publications (2)

Publication Number Publication Date
CN104679573A true CN104679573A (zh) 2015-06-03
CN104679573B CN104679573B (zh) 2018-03-20

Family

ID=53314670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510136829.9A Active CN104679573B (zh) 2015-03-27 2015-03-27 一种wpf和c++的交互方法

Country Status (1)

Country Link
CN (1) CN104679573B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371845A (zh) * 2016-09-05 2017-02-01 深圳震有科技股份有限公司 通过控件池基于wpf重复利用同类型控件的方法及系统
CN106547528A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 一种界面布局方法以及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JARVIS CHU: "http://blog.csdn.net/jarvischu/article/details/6634185,在 WPF 中,使用 C++ 编写的 DLL 文件", 《CSDN》 *
LEWUTIAN: "http://www.linuxidc.com/Linux/2010-09/28746.htm,Linux C调用C库", 《LINUX公社》 *
阁子: ""http://www.cnblogs.com/rocketfan/archive/2010/11/30/1892429.html,PY++ 自动将你的C++程序接口封装供python调用"", 《博客园》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106547528A (zh) * 2015-09-22 2017-03-29 腾讯科技(深圳)有限公司 一种界面布局方法以及装置
CN106547528B (zh) * 2015-09-22 2020-07-14 腾讯科技(深圳)有限公司 一种界面布局方法以及装置
CN106371845A (zh) * 2016-09-05 2017-02-01 深圳震有科技股份有限公司 通过控件池基于wpf重复利用同类型控件的方法及系统
CN106371845B (zh) * 2016-09-05 2019-10-25 深圳震有科技股份有限公司 通过控件池基于wpf重复利用同类型控件的方法及系统

Also Published As

Publication number Publication date
CN104679573B (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
US11099918B2 (en) Accelerating algorithms and applications on FPGAs
CA2951145C (en) Page constructor and page constructing method
WO2019114517A1 (zh) 一种神经网络模型部署方法、预测方法及设备
US20130117216A1 (en) Star and snowflake schemas in extract, transform, load processes
US8839198B2 (en) Automated analysis of composite applications
CN111782675B (zh) 生成数据库脚本的方法、装置及计算机可读存储介质
AU2017254506B2 (en) Method, apparatus, computing device and storage medium for data analyzing and processing
CN104267932A (zh) 数据库操作方法、装置及服务器
CN105975277A (zh) 一种基于模板的混合云弹性伸缩组构建方法
CN107506483A (zh) 页面加载方法、装置、电子设备及存储介质
WO2018233673A1 (zh) 一种控制器中模型代码配置方法和装置、存储介质
CN111078268B (zh) 银行系统业务处理方法、装置、设备及存储介质
CN104679573A (zh) 一种wpf和c++的交互方法
US20130346845A1 (en) Interactive multi device in memory form generation
CN108389153B (zh) 一种视图加载的方法及终端设备
US20130174116A1 (en) Systems and methods for metamodel transformation
US11176161B2 (en) Data processing method, apparatus, and device
CN103914223B (zh) 终端应用界面的生成方法及装置
CN103186384A (zh) 一种面向业务组件的软件设计分析系统及其使用方法
CN106293658A (zh) 一种界面组件生成方法及其设备
CN110704766A (zh) 基于实时快照的界面渲染优化的方法、装置和电子设备
CN104102496A (zh) 一种基于windows平台的银行自助系统跨浏览器插件的开发方法
CN109597611A (zh) 前端数据流控制组件开发系统、方法、设备及存储介质
WO2018205390A1 (zh) 一种控件布局显示控制方法、系统、装置及计算机可读存储介质
CN103309697A (zh) 一种应用程序的界面显示方法、系统及显示终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method of interaction between WPF and C + +

Effective date of registration: 20210701

Granted publication date: 20180320

Pledgee: Bank of China Limited Xiamen Kaiyuan sub branch

Pledgor: XIAMEN MICROMATCH ELECTRONIC INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2021980005613

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230922

Granted publication date: 20180320

Pledgee: Bank of China Limited Xiamen Kaiyuan sub branch

Pledgor: XIAMEN MICROMATCH ELECTRONIC INFORMATION TECHNOLOGY CO.,LTD.

Registration number: Y2021980005613

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method of Interaction between WPF and C++

Effective date of registration: 20230926

Granted publication date: 20180320

Pledgee: Bank of China Limited Xiamen Kaiyuan sub branch

Pledgor: XIAMEN MICROMATCH ELECTRONIC INFORMATION TECHNOLOGY CO.,LTD.

Registration number: Y2023980058907