- 浏览: 117793 次
- 来自: ...
文章分类
最新评论
十几行代码,就使一个重要的旧系统组件,完全融入了基于.Net的新系统中!事情是这样的:
-
C语言写的一个标准的 Win32 DLL,完成了一个算法相当复杂的功能,在旧有系统中稳定而高效的运行,但是已没有源代码
-
我们的新系统需要完全相同的功能组件,但新系统基于.Net,用C#开发
幸好有C++/CLI,只用了两个小时开发调试,十几行代码就搞定!主要工作就是重新用C++/CLI的语法声明 DLL 中的函数,或曰所谓托管非托管混合编程,例如:
原来的 DLL 函数声明为:_declspec(dllimport) bool QueryInit(const char* lpszDataFilePath = NULL);
用C++/CLI重新声明如下:
[DllImport("Query.dll", EntryPoint="QueryInit")]
extern "C" bool QueryInit([MarshalAs(UnmanagedType::LPStr)] String^ lpszDataFilePath);
然后就可以直接调用:bool ok = QueryInit("d:/data/");包装一下编译为CLI的DLL就可以给C#用
不需要 Web Service 等“重型”的包装技术,C++/CLI提供了在特定情形下最直接简便的选择;当然这种集成技术主要面向功能的集成,对面向数据,面向服务的集成而言没有必要,因为在那些情形下有多种方案可供选择
由于并非专业的 .Net 开发者,或许有更直接的方法可以在 C# 中调用标准 Win32 DLL,恳请各位看官赐教
[今天又看了一下,,发现C#也可以:
using System.Runtime.InteropServices; public class Win32 { [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int MessageBox(int hWnd, String text, String caption, uint type); } public class HelloWorld { public static void Main() { Win32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0); } }
]
发表评论
-
The Object Primer
2004-12-11 11:21 5861,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 756错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 592前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 606前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 46314.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 642同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 606有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 610设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 671关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 709交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 610整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 802一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 746事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 837经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 739BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6731, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 718读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 707Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 655Event BusinessWare是一个事件驱动的系统 ... -
WS-Security Interoperability Issues: WebSphere, JBoss, Axis and .Net
2006-08-31 22:46 837检验了一下WS-Security的互操作情况,涉及到 ...
相关推荐
总结来说,"评分系统软件"项目涵盖了C++/CLI编程、GUI设计、数据结构与算法、.NET Framework集成、文件操作、数据安全以及性能优化等多个IT知识点。通过这样的系统,不仅可以学习到编程技能,还能深入理解软件工程中...
总的来说,这篇关于“MFC应用程序在.NET框架下的扩展PDF”的讲解涵盖了多方面的技术知识,包括但不限于C++/CLI编程、.NET互操作性、事件处理和性能优化。这对于希望将MFC应用程序与.NET Framework集成的Visual C++...
另外,Visual C++.NET也支持C++/CLI,这是一种语言扩展,使得C++可以无缝集成.NET框架。通过C++/CLI,你可以编写混合代码,利用托管和非托管代码的优点。 最后,不要忽视调试和测试的重要性。Visual Studio IDE提供...
Visual C++是微软公司开发的一款集成开发环境,它支持C、C++以及C++/CLI编程语言,特别适用于Windows平台的应用程序开发。 在Visual C++中,开发者可以利用MFC(Microsoft Foundation Classes)库来构建基于Windows...
熟悉MFC的人在转向更现代的Visual Studio版本时,会发现很多概念和API仍然适用,比如C++/CLI(Managed C++)和WPF(Windows Presentation Foundation)等技术,它们都是MFC思想的延伸和发展。 然而,随着技术的发展...
在C++/CLI(Common Language Runtime,公共语言运行时)环境下,开发者可以利用.NET Framework的特性同时保持C++的性能和控制。Windows窗体应用程序允许开发者创建丰富的、交互式的图形用户界面,包括按钮、文本框、...
【标题】:“C++课程设计——小型商品销售管理系统” 在这个C++课程设计中,学生将构建一个小型的商品销售管理系统,以此来实践C++编程语言的基础和高级特性,以及理解面向对象编程(OOP)的概念。这是一项综合性的...
**MFC (Microsoft Foundation Classes)** 是微软开发的一个C++类库,它为Windows应用...不过随着技术的发展,现代开发者可能会转向Qt、WPF或其他跨平台框架,但MFC仍然是理解和学习Windows编程历史不可忽视的一部分。
《MFC/VC++编程笔记》是一份专为开发者准备的深入学习资料,旨在帮助读者掌握MFC(Microsoft Foundation Classes)框架和VC++(Visual C++)编程技术,从而成为熟练的VC++高手。这份资源包含了丰富的编程精粹,不仅...
5. **多语言支持**:除了C#和VB.NET,JustCode还支持其他.NET语言,如F#和C++/CLI。 6. **集成开发环境(IDE)增强**:它可作为Visual Studio、Resharper或独立插件使用,提供更流畅的开发体验。 7. **版本控制...
2. **VC++**:Visual C++是微软的集成开发环境,支持MFC和其他编程模型,如.NET Framework的C++/CLI。在打包程序中,VC++用于编写源代码,将文件整合到EXE中;解包时,VC++编译的代码负责在内存中或磁盘上还原原始...
此外,C++的异常处理机制不容忽视。在处理用户输入或文件操作时,可能会出现错误,如非法数据或文件未找到。通过使用`try-catch`块,我们可以捕获并优雅地处理这些异常,防止程序崩溃。 为了提高用户体验,可以引入...
VC++,全称为Visual C++,是微软公司推出的一种集成开发环境,支持C、C++以及C++/CLI等编程语言。它以其强大的性能、丰富的类库以及对Windows操作系统的深度支持而闻名。在VC++中,开发人员可以利用MFC(Microsoft ...
.NET Framework提供了类库,支持多种编程语言,如C#、VB.NET和C++/CLI等,使得开发者能够高效地构建各种类型的应用程序。 ASP.NET是.NET Framework的一部分,专门用于构建动态Web应用程序。它提供了一个模型-视图-...
FiddlerCore是Fiddler的主要功能之一,它是Fiddler的.NET版本,可以被.NET框架支持的各种语言(如C#、VB.NET、C++/CLI等)调用。通过引用FiddlerCore4.Dll库,开发者可以在自己的项目中轻松实现对HTTP和HTTPS请求的...
随着开源反编译器如ILSpy、dotPeek等的出现,提供了免费且功能丰富的替代品,Reflector的市场份额有所下降,但它的历史地位和对.NET反编译技术的贡献不可忽视。 在使用反编译器时,必须注意版权和法律问题。查看...
"hiredis"标签则强调了C语言的客户端库,它是C++开发者的重要工具,因为大多数系统级编程,尤其是在高性能应用中,C/C++的性能优势是不可忽视的。 在Windows平台上,由于Redis原生支持Linux系统,因此需要特别编译...
它集成了C、C++和C++/CLI语言的编译器,支持MFC(Microsoft Foundation Classes)库,使得开发者可以方便地构建基于Windows API的应用程序。 这篇学习笔记首先可能涵盖了C++的基础知识,包括但不限于语法、面向对象...
Visual C++ 2008是微软公司推出的编程环境,它提供了强大的C++编译器、调试工具以及对.NET Framework的集成支持。在这个版本中,开发者可以利用MFC(Microsoft Foundation Classes)库来构建Windows应用程序,同时也...
它包含一组丰富的类库,可以支持各种编程语言,如C#、VB.NET或C++/CLI。在.NET平台上开发的应用程序,可以通过使用.NET的图形系统(例如System.Drawing命名空间)来创建和使用自定义图标。这些图标不仅可以用于窗口...