`
Fangrn
  • 浏览: 818051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++库c#调用开发时需要注意的一点

    博客分类:
  • C
 
阅读更多

因为业务需要,需要将一个  c++写的 dll库由 C# 来调用,于是乎google了很多相关的文章,照着写了个  C#程序,结果发现很多时候很简单调用,结果都错了,经过很多次的失败和郁闷,最后发现有个关键点,就是我们c++ 和  c#的数据类型要一一对照起来才可以,如下是从msdn上摘抄一段对照列表,很有用的

 

Unmanaged type in Wtypes.h

Unmanaged C language type

Managed class name

Description

HANDLE

void*

System. IntPtr

32 bits on 32-bit Windows operating systems, 64 bits on 64-bit Windows operating systems.

BYTE

unsigned char

System. Byte

8 bits

SHORT

short

System. Int16

16 bits

WORD

unsigned short

System. UInt16

16 bits

INT

int

System. Int32

32 bits

UINT

unsigned int

System. UInt32

32 bits

LONG

long

System. Int32

32 bits

BOOL

long

System.Int32

32 bits

DWORD

unsigned long

System. UInt32

32 bits

ULONG

unsigned long

System. UInt32

32 bits

CHAR

char

System. Char

Decorate with ANSI.

WCHAR

wchar_t

System. Char

Decorate with Unicode.

LPSTR

char*

System. String or System.Text. StringBuilder

Decorate with ANSI.

LPCSTR

Const char*

System. String or System.Text. StringBuilder

Decorate with ANSI.

LPWSTR

wchar_t*

System. String or System.Text. StringBuilder

Decorate with Unicode.

LPCWSTR

Const wchar_t*

System. String or System.Text. StringBuilder

Decorate with Unicode.

FLOAT

Float

System. Single

32 bits

DOUBLE

Double

System. Double

64 bits

For corresponding types in Visual Basic 2005, C#, and C++, see the Introduction to the .NET Framework Class Library .

 

 

 

分享到:
评论
1 楼 cloudfile 2013-01-12  
谢谢分享!

相关推荐

    C#winform调用C++库案例,使用C++编写动态库,然后再用C#调用当前C++编写的动态库

    3. **P/Invoke**:C#调用C++ DLL需要使用平台调用服务(P/Invoke)。在C#代码中,使用`DllImport`属性来声明C++函数。 ```csharp using System; using System.Runtime.InteropServices; public partial class ...

    C#调用C++的动态库Dll示例(含UsbLibDotNet使用)

    1.C#调用C++封装的动态库dll 2.结构体含union共同体的C++转C#示例 3.C#结构体指针的调用演示 4.C#读取USB数据设备的示例 5.C#动态调用C++dll库示例 6.C#静态调用C++dll库示例 注意:UsbLibDotNet使用时候需要先安装...

    C#调用C++DLL动态库.rar_C#调用C++DLL动态库_c++dll动态库_c++开发动态库

    跨平台开发时,需要注意C++ DLL是否适用于目标平台(如x86、x64或ARM)。C#项目也需要配置为相应的平台目标。 8. **性能考虑**: 虽然P/Invoke提供了便利,但跨语言调用会有一些性能开销。如果频繁调用,应考虑...

    C++调用C#的DLL实例程序

    本示例探讨了如何使用C++调用由C#编写的DLL动态链接库。C++与C#是两种不同的编程语言,它们有着各自的优势,但在某些情况下,可能需要结合两者的能力。下面将详细介绍这个过程,并解释相关知识点。 首先,我们要...

    C#调用C++动态库中自身定义的回调函数

    总结来说,C#调用C++动态库并处理回调函数的关键在于正确地定义C++的函数接口,创建匹配的C#委托类型,使用P/Invoke进行调用,并注册合适的回调方法。这种技术在需要高性能计算、利用现有C++库或者与其他系统交互时...

    C++调用C#类库

    在跨语言编程中,有时我们需要在C++代码中调用C#编写的类库,以利用C#提供的功能,如.NET Framework丰富的库支持、垃圾回收等。本文将深入探讨如何在C++中调用C#类库,以及涉及到的关键技术。 首先,C#类库是以DLL...

    C#调用C++代码完整实例

    本实例将详细讲解如何使用C#调用C++代码,通过DLL动态链接库实现功能。 首先,我们需要了解C#和C++之间的互操作性是通过`Platform Invoke (P/Invoke)`和`.NET Framework`的`Common Language Runtime (CLR)`实现的。...

    C#调用C++动态DLL

    在C#中调用C++编写的动态链接库(DLL)是一种常见的跨语言通信方式,特别是当C++库提供了某些C#中没有的功能或者优化的性能时。本文将详细探讨如何在C#中实现对C++动态DLL的调用。 首先,了解动态链接库(DLL)的...

    C#调用C++动态库,执行回调函数并传递结构体参数

    首先,C#调用C++动态库是通过P/Invoke实现的,这是一种.NET Framework提供的特性,允许托管代码(如C#)调用非托管代码(如C++)。为了进行调用,我们需要在C#中定义与C++接口一致的委托类型和结构体类型,以匹配C++...

    C#使用CLR调用C++的DLL库

    本主题将详细介绍如何在C#应用中利用CLR调用C++编写的DLL库,特别是在Windows环境下。我们将分为三个关键步骤进行讲解: 1. **创建C++ DLL库** - 首先,你需要创建一个C++动态链接库(DLL)项目。在Visual Studio...

    C#调用C++DLL导出类

    总结来说,C#调用C++DLL中的类主要涉及以下几个步骤: 1. 在C++DLL中定义导出类及其方法。 2. 在C#中使用DllImport加载DLL,并定义C风格的函数接口。 3. 创建一个C#托管类,持有C++对象的指针,并提供相应的C#方法...

    C# 调用 C++ 动态库并调用自身注册到动态库的函数

    首先,理解C#调用C++动态库的过程。C++ DLL中的函数需要遵循特定的约定,即标准的C调用约定(__stdcall),以便C#能够正确地识别和调用这些函数。在C++中,我们可以定义一个函数指针类型,然后在C#中声明对应的委托...

    C++调用C#DLL的DEMO

    本示例探讨的是如何使用C++调用C#编写的动态链接库(DLL)。C#是一种面向对象的语言,具有丰富的特性,而C++则是一种强大的系统级编程语言,广泛应用在底层开发和性能敏感的场景。通过C++调用C#的DLL,可以充分利用...

    C++和C#相互调用COM组件

    #### 示例三:在VC6.0中编写COM组件,使用VS2005 C#调用 **3.1 VC6.0编写COM组件** **步骤**: - 使用VC6.0创建一个新的MFC ActiveX控件项目。 - 定义接口和方法,并确保项目能够生成所需的.tlb文件。 **3.2 VS...

    C#调用C++动态库实例程序,地址映射传参,

    首先,`C#调用C++动态库实例程序`表明我们需要创建一个C++ DLL,然后在C#应用程序中使用它。C++动态库允许我们编写低级别的代码,这在处理系统级任务或优化性能时非常有用。C#作为.NET框架的一部分,提供了丰富的...

    非托管C++调用C#的dll

    通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA C#提供了一种非托管C++直接调用的方法,该方法可以...

    c#调用C++动态库

    总之,C#调用C++动态库涉及的主要知识点包括:C++的`__declspec(dllexport)`导出、C#的`DllImport`特性、调用约定`CallingConvention`,以及可能的异常处理和COM互操作。通过理解这些概念,开发者可以有效地在两种...

    C++调用C#库例程

    1. **创建C#库**:首先,在C#中编写一个类库,包含需要在C++中调用的方法或功能。确保这些方法是公有的,并且是静态的,以便可以直接调用,而无需实例化对象。同时,C#库需要编译为.NET Framework的DLL文件。 2. **...

    C#调用c++函数的dll文件,同时实现c++调用c#函数

    本示例展示了如何在C#和C++之间实现互操作性,即C#调用C++编写的动态链接库(DLL)函数,同时C++也能调用C#的方法。这主要依赖于.NET框架提供的互操作特性,如C++/CLI(C++的.NET版本)和P/Invoke(Platform Invoke...

Global site tag (gtag.js) - Google Analytics