您的位置:首页 > 编程语言 > C语言/C++

C# 调用C++或者C的DLL

2015-05-25 17:13 162 查看
本文将讲诉我最近使用C#来调用C++或者C的DLL的一个使用过程:

C#与C++的类型转换

简单的使用

回调函数

我遇到的问题

C#与C++的类型转换

BSTR ——— StringBuilder

LPCTSTR ——— StringBuilder

LPCWSTR ——— IntPtr

handle———IntPtr

hwnd———–IntPtr

char *———-string

char**———-IntPtr

int * ———–ref int

int &———–ref int

void *———-IntPtr

unsigned char *—–ref byte

Struct需要在C#里重新定义一个Struct

简单的使用

例如C++的原有函数是:


int __stdcall FunctionName(unsigned char param1, unsigned short param2)

其中的参数数据类型在C#中,必须转为对应的数据类型。如:


[DllImport(“ COM DLL path/file ”)]

extern static int FunctionName(byte param1, ushort param2)

回调函数

CallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str);

注意在每个函数的前面加上public static extern +返回的数据类型,如果不加public ,函数默认为私有函数,调用就会出错。

我遇到的问题

在使用过程主要就是出现了accessviolationexception(尝试读取或写入受保护的内存。这通常指示其他内存已损坏。)异常:这个异常的发生其实与自己设定的参数类型有关,我使用的时候把char**—- ref string,这样是错误的。正确:
[char**----ref  IntPrt]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dll c++ c#