日期:2014-05-18  浏览次数:20895 次

c#中怎样调用C++的动态链接库
c++中的dll文件名为pr2.dll,以下是其中的一个函数,请问在c#中怎样调用:
Function PR2MagReadTrack2(hDev:integer;n:integer;const RecData:LPStr):integer;stdcall;
//功能: 读存折上的磁条二磁道信息
//参数:hDev-设备描述表,n-磁条标准,RecData-存放读到信息的指针.
//返回: 0-执行正确;小于0执行失败
// -2 - 空白磁条
// -3 - 读出错或校验错
// -4 - 没有存折


------解决方案--------------------
哇 什么代码哎..
[DllImport("pr2.dll")]
extern int PR2MagReadTrack2(int hDev,int n,string RecData);

使用的时候,
int ret = PR2MagReadTrack2(123,32,"fhnsandf");
------解决方案--------------------
[DllImport("pr2.dll")] 
extern int PR2MagReadTrack2(int hDev,int n,string RecData); 
使用的时候
int ret = PR2MagReadTrack2(123,32,"fhnsandf");

恩这样就行了
------解决方案--------------------
C# code
[DllImport("pr2.dll")]
extern int PR2MagReadTrack2(int hDev,int n, [out] [MarshalAs(UnmanagedType.LPStr)] string RecData);
使用的时候
string OO;
int ret = PR2MagReadTrack2(123,32,OO);

------解决方案--------------------
顶一楼
------解决方案--------------------
C# code[DllImport("pr2.dll")] 
extern int PR2MagReadTrack2(int hDev,int n, out [MarshalAs(UnmanagedType.LPStr)] string RecData); 
使用的时候 
string OO; 
int ret = PR2MagReadTrack2(123,32,out OO);
------解决方案--------------------
探讨
哇 什么代码哎..
[DllImport("pr2.dll")]
extern int PR2MagReadTrack2(int hDev,int n,ref string RecData);

使用的时候,
string result = null;
int ret = PR2MagReadTrack2(123,32,ref result);

------解决方案--------------------
static?