`
chelsea
  • 浏览: 117862 次
  • 来自: ...
社区版块
存档分类
最新评论

C++/CLI:被忽视的集成技术

    博客分类:
 
阅读更多

十几行代码,就使一个重要的旧系统组件,完全融入了基于.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);
    }
}      

]

分享到:
评论

相关推荐

    评分系统软件

    总结来说,"评分系统软件"项目涵盖了C++/CLI编程、GUI设计、数据结构与算法、.NET Framework集成、文件操作、数据安全以及性能优化等多个IT知识点。通过这样的系统,不仅可以学习到编程技能,还能深入理解软件工程中...

    MFC应用程序在.net框架下的扩展PDF,透彻讲解关于Visual C++开发人员如何使用.net框架.

    总的来说,这篇关于“MFC应用程序在.NET框架下的扩展PDF”的讲解涵盖了多方面的技术知识,包括但不限于C++/CLI编程、.NET互操作性、事件处理和性能优化。这对于希望将MFC应用程序与.NET Framework集成的Visual C++...

    Visual C++_NET入门与提高实用教程.rar

    另外,Visual C++.NET也支持C++/CLI,这是一种语言扩展,使得C++可以无缝集成.NET框架。通过C++/CLI,你可以编写混合代码,利用托管和非托管代码的优点。 最后,不要忽视调试和测试的重要性。Visual Studio IDE提供...

    《Visual C++开发技术大全》光盘内容 04

    Visual C++是微软公司开发的一款集成开发环境,它支持C、C++以及C++/CLI编程语言,特别适用于Windows平台的应用程序开发。 在Visual C++中,开发者可以利用MFC(Microsoft Foundation Classes)库来构建基于Windows...

    visual c++ 6.0 支持winxp、win7、win10

    熟悉MFC的人在转向更现代的Visual Studio版本时,会发现很多概念和API仍然适用,比如C++/CLI(Managed C++)和WPF(Windows Presentation Foundation)等技术,它们都是MFC思想的延伸和发展。 然而,随着技术的发展...

    VS2013 CLR Windows窗体应用程序补丁

    在C++/CLI(Common Language Runtime,公共语言运行时)环境下,开发者可以利用.NET Framework的特性同时保持C++的性能和控制。Windows窗体应用程序允许开发者创建丰富的、交互式的图形用户界面,包括按钮、文本框、...

    c++课设(小型商品销售管理系统)

    【标题】:“C++课程设计——小型商品销售管理系统” 在这个C++课程设计中,学生将构建一个小型的商品销售管理系统,以此来实践C++编程语言的基础和高级特性,以及理解面向对象编程(OOP)的概念。这是一项综合性的...

    MFC VC++ 参考手册

    **MFC (Microsoft Foundation Classes)** 是微软开发的一个C++类库,它为Windows应用...不过随着技术的发展,现代开发者可能会转向Qt、WPF或其他跨平台框架,但MFC仍然是理解和学习Windows编程历史不可忽视的一部分。

    MFC/VC++编程笔记

    《MFC/VC++编程笔记》是一份专为开发者准备的深入学习资料,旨在帮助读者掌握MFC(Microsoft Foundation Classes)框架和VC++(Visual C++)编程技术,从而成为熟练的VC++高手。这份资源包含了丰富的编程精粹,不仅...

    Telerik JustCode Q1 2010 (2010年3月26日版本)

    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++实现

    此外,C++的异常处理机制不容忽视。在处理用户输入或文件操作时,可能会出现错误,如非法数据或文件未找到。通过使用`try-catch`块,我们可以捕获并优雅地处理这些异常,防止程序崩溃。 为了提高用户体验,可以引入...

    vc++项目开发实例

    VC++,全称为Visual C++,是微软公司推出的一种集成开发环境,支持C、C++以及C++/CLI等编程语言。它以其强大的性能、丰富的类库以及对Windows操作系统的深度支持而闻名。在VC++中,开发人员可以利用MFC(Microsoft ...

    ASP.NET学习教程

    .NET Framework提供了类库,支持多种编程语言,如C#、VB.NET和C++/CLI等,使得开发者能够高效地构建各种类型的应用程序。 ASP.NET是.NET Framework的一部分,专门用于构建动态Web应用程序。它提供了一个模型-视图-...

    FiddlerCore4.Dll

    FiddlerCore是Fiddler的主要功能之一,它是Fiddler的.NET版本,可以被.NET框架支持的各种语言(如C#、VB.NET、C++/CLI等)调用。通过引用FiddlerCore4.Dll库,开发者可以在自己的项目中轻松实现对HTTP和HTTPS请求的...

    .net 的DLL反编译器!!

    随着开源反编译器如ILSpy、dotPeek等的出现,提供了免费且功能丰富的替代品,Reflector的市场份额有所下降,但它的历史地位和对.NET反编译技术的贡献不可忽视。 在使用反编译器时,必须注意版权和法律问题。查看...

    Redis.rar hiredis.lib, redis-server.exe,redis-cli.exe

    "hiredis"标签则强调了C语言的客户端库,它是C++开发者的重要工具,因为大多数系统级编程,尤其是在高性能应用中,C/C++的性能优势是不可忽视的。 在Windows平台上,由于Redis原生支持Linux系统,因此需要特别编译...

    Inside-VC-P-P---Study-Notes.rar_Windows编程_Visual_C++_

    它集成了C、C++和C++/CLI语言的编译器,支持MFC(Microsoft Foundation Classes)库,使得开发者可以方便地构建基于Windows API的应用程序。 这篇学习笔记首先可能涵盖了C++的基础知识,包括但不限于语法、面向对象...

    visual C++ 2008PC与PDA数据交互系统设计源代码

    Visual C++ 2008是微软公司推出的编程环境,它提供了强大的C++编译器、调试工具以及对.NET Framework的集成支持。在这个版本中,开发者可以利用MFC(Microsoft Foundation Classes)库来构建Windows应用程序,同时也...

    超级精美的图标,vista专用的。

    它包含一组丰富的类库,可以支持各种编程语言,如C#、VB.NET或C++/CLI。在.NET平台上开发的应用程序,可以通过使用.NET的图形系统(例如System.Drawing命名空间)来创建和使用自定义图标。这些图标不仅可以用于窗口...

Global site tag (gtag.js) - Google Analytics