C#调用dll,使用intPtr接收char*返回值不一致 5C

在C#中调用C的dll,遇到char* 使用 intPtr接收,返回值与C中char 指针不一致

C结构体

    typedef struct
    {

            BYTE ErrCode;   
            int* errstring;

    } ERRPARAMS;

函数

    BYTE DSCUDAPICALL dscGetLastError(ERRPARAMS* errparams);

C#结构体

    [StructLayout(LayoutKind.Sequential)]
    public struct ERRPARAMS
    {
        public byte ErrCode;
        public IntPtr errstring;
    }

函数

    [DllImport("dscud.dll", EntryPoint = "dscGetLastError", CharSet = CharSet.Unicode, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
    extern unsafe public static byte dscGetLastError(ERRPARAMS* errparams);

执行结果:
在C中 ErrCode是5 errstring是0x1007eb80 可以转换成字符串

在C#中 ErrCode是5 errstring是0x00000010 使用Marshal.PtrToStringAnsi转换为空,不是想要的地址

将intPtr改成string/String/StringBuilder/char[]都试过了,函数会报内存异常的错误。

且大神解答,非常感谢。

0

2个回答

extern public static IntPtr dscGetErrorString(byte error_code);
应该是
extern unsafe public static IntPtr dscGetErrorString(ERRPARAMS * param);
将程序集设置为允许不安全代码

0
u011124078
刘奇1993 感谢回答,我试了你的方法,返回的依然是0x00000010。我怀疑是否和C与C#管理方式不同有关,但现在想要得到正确的string不知怎么做
4 个月之前 回复

别人的DLL程序 里有2个不同的方法

0
u011124078
刘奇1993 dll文件虽然看不到,但不会有两个不同方法
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#获取dll char*返回值
C:rnextern "C" __declspec(dllexport) char * Show2()rnrn unsigned char output[32] = '1','2','3','4','5','6','7','8','9' ;rn unsigned char *show = &output[0];rn char * show2 = (char *)show;rn return show2;rnrnrnrnC#rnrn[DllImport(@"C:\Users\HJD\Documents\Visual Studio 2015\Projects\CUseDll\CUseDll\bin\Debug\DLLCPP.dll", CharSet = CharSet.Ansi, ExactSpelling = false)]rn public static extern string Show2();rnrn string receive = Show2();rnrn执行到这里就崩溃了 求解。
c#调用DLL中char*(图像),使用intptr但是没有返回值,且调用至函数运行时 exe停止运行
C++的dll 文件 函数声明rnDWORD H264_PLAY_CatchPicBuf(LONG nPort, char* pBuf,LONG len,LONG *width,LONG *height,long ntype=0)rnrn我的C# 导入 函数声明rn[DllImport("H264Play.dll")]rn public static extern int H264_PLAY_CatchPicBuf(int nPort,ref IntPtr buf,int len, ref int pwidth, ref int pheight,int type=0);rn rnC#程序中的变量定义 rnpublic IntPtr ImgBuf = Marshal .AllocHGlobal(928*576*3);rnint getc = XMSDK.H264_PLAY_CatchPicBuf(1,ref ImgBuf,928*576*3,ref ImgWidth, ref ImgHeight, 0);rnrn相关的变量,用到的部分就是上面这些rnrn但是返回值,只有width和height,图像的buf为空。rnrn而且调试运行至调用函数这句,报错, (。exe停止运行)rnrn问:1. 我是不是imgbuf定义错了,或使用错了,没有返回值rn2.我分配的空间太大导致的 停止运行 报错?
C#调用C++的Dll(参数和返回值為char* TCHAR*)
想要在C#和C++之间进行字符串传递会涉及到两件事情: 1.C#的string和C++的字符串首指针要怎么对应.   2.字符串分为ANSI和UNICODE. C++ 头文件接口: //FilePolice.h //參數和返回值為Ansi extern "C" __declspec(dllexport) char* __stdcall EncryptString(char
c#如何调用动态DLL参数(char*)并有返回值?
有一个动态DLL调用函数如下:rn参数说明:rn//ch1=没有返回值rn//[color=#FF0000]ch2=有返加值[/color]rnextern "C" __declspec(dllexport)void __stdcall Test(char *ch1,char *ch2)rnrn //rnrnrn[color=#FF0000]求助******************[/color]rn在C#如何调用上面的DLL函数,请给出详细例子代码,rn非常感谢
C# 接收C++ dll返回值的问题请教。
工作需要,C#调用C++ 方法中的函数: rnrnC++中返回CString 类型,rnrn[code=C/C++]rnrndeclspec(dllexport) CString __stdcall yanse_xy(int x) rn rnCString str; rn.......rnrnreturn str;rnrnrnrn[/code]rnrnrnC#调用如下rn[code=C#]rnrn [DllImport("xxx.dll", EntryPoint = "yanse_xy")]//根据座标取颜色rn public static extern string yanse_xy(int x);//根据座标取颜色rnrnrn MessageBox.Show( yanse_xy(681));rnrnrn[/code]rnrn这样写明显是不对的。C++中的SCtring 和C#中的string是两回事。rnrn求解怎么写才正确。改C++或C#中的方法都可以。要求就是可以接收到C++中返回的字符串就行了。谢过。
C#多次调用DLL结果不一致
用周立功的USBCAN库做二次开发,调用dll中的一个函数(Do_VCI_StartCAN(),见下)时,在我电脑上用几次会随机的出现一两次不成功,换一台电脑就没有这种情况。rn[code=csharp]rnprivate void Window_Loaded(object sender, RoutedEventArgs e)rn rn VCI_Return_Status re = 0;rn tryrn rn re = this.vm_binding.vm_caninstance.Do_VCI_OpenDevice();rn if (re == VCI_Return_Status.STATUS_OK)rn rn this.lbl_status.Content = "打开设备成功";rn rn re = this.vm_binding.vm_caninstance.Do_VCI_StartCAN();//就是这里rn if (re == VCI_Return_Status.STATUS_OK)rn rn this.lbl_status.Content = "开始接收CAN数据...";rn this.vm_binding.vm_timer.Start();rn this.DataSaveTimer.Start();rn rn elsern rn this.lbl_status.Content = "开始接收数据失败。请检查设备连接是否正确,然后重新启动程序。";rn this.vm_binding.vm_timer.Stop();rn this.DataSaveTimer.Stop();rn rn rn elsern rn this.lbl_status.Content = "打开设备失败,请检查设备是否正确连接PC,是否正确安装设备驱动";rn rnrn rn catch (Exception excp)rn rn StringBuilder sb = new StringBuilder();rn sb.Append("打开设备异常:").Append(excp.Message);rn // this.lbl_status.Content = sb.ToString();rn rn rn[/code]rnrn单步过的时候是OK的,想请问调用一个DLL时,出现结果不一致的原因一般有哪些,除了单步运行还有什么办法可以查rn非常感谢!
C# 调用C++非托管DLL, C++中的const char *对应C#中的IntPtr类型。
C# 调用C++非托管DLL, C++中的const char *对应C#中的IntPtr类型。
c# 接收sql返回值
如下語句:rn select sid1,sid2 from student where sname='zhang'rnrn我用C#做查詢,怎么在程序中使用和接受sid1和sid2 的值?rn當前我遇到的查詢,只返回一行記錄,希望在C#中對比查詢出的數字大小,此時該怎么在定義變量 保存該值?rnrn當返回值為空時怎么判斷,當返回多行值時有怎么取其其中的一個值保存到變量中?rn請高手指教,謝謝大家!
C#中IntPtr的使用问题
在VTK的类OBBTree类里有一个成员函数是int Insideoroutside(IntPtr point),我现在有一个点,它的三维坐标都有,要怎么传到这个函数里?rnrn新手求问啊,对IntPtr不熟悉
C#使用链表结构(intptr)与c语言 dll配合使用。
飞哥原创,可转载。
Unity使用C#调用C++dll传递指针参数、接收指针返回值
C#调用C++返回指针参数 用IntPtr接收返回 下面是引入DLL的代码片段: [DllImport("BthExports")] public extern static IntPtr BthGetName(UInt64 ullAddr); 其返回的内容为一个Uint64的数组,我们可以用“IntPtr”来代替这个C++方法体返回的指针,我们可以先来看一下“IntPtr”的定义:“In
char* dll调用问题
VC dll中rn   char *tmp;rn tmp = new char[13];rn    ...rn    return tmprn调用中rn   char *rr; rn strcpy(rr,icprint(2007,6,15));rnrn执行到strcpy(rr,icprint(2007,6,15));就报错rn怎么办
C#调用dll函数,IntPtr如何作参数传递
怎么传递IntPtr的 rndll里面的参数是IntPtr类型,在C#里面传递一个new的IntPtr类型给它,会报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏” rndll里面:CaptureFromUSB(uint enHandle, IntPtr pBuffer, int srcWidth, int srcHeight); rnCallBackAction(IntPtr pRGBBuf, int imgWidth, int imgHeight)里面调用CaptureFromUSB函数, rnForm里面调用: rnIntPtr pnt = new IntPtr(2121);//不知道对不对 rnCallBackAction(pnt, 320, 240);//这里调用过去就报错 rnrn想读取数据流,然后转换为图片,谢谢
调用Dll的返回值问题
我调用一个C写的Dll,里面有一个函数:rnBOOL __stdcall Fp_SetCallback(rnIN Fp_Callback_ pCallbackrn);rnrnrn参数:rnpCallback回调函数指针, 指向通过Fp_Callback_类型的回调函数, Fp_Callback_ 在FpDrv.h 中rn定义如下:rntypedef void (__stdcall *Fp_Callback_)(BYTE * const pBuffer,rnlong lBufferSize);rn其中, pBuffer 指向图像内存, lBufferSize 是图像数据大小, 以字节为单位。rn返回值:rn成功返回TRUE, 失败返回FALSE。rnrn请问在Delphi中应该如何定义p_Callback并调用?谢谢!
dll调用及返回值问题
用vc6.0写RKYdll32.DLL时这样写rnint Rky(int Pa,char *BFE)rn rn IF(pa=1)rn rn BUFFE= " ABCD ";rn rn return 0;rn rn 在VFP中rn DECLARE INTEGER Rky IN RkyDLL32.dll INTEGER , STRING @rnSTORE 1 TO PrnSTORE '' TO BFERrnRE = RKY(p,@BFER)rn为什么不会返回BFER="ABCD"呢,应怎样来修改dll文件才能得到re=0 BFER="ABCD"
C# 调用c的dll,char*指针的问题
要做一个读卡器的程序,厂商提供的C的dll,其中有个函数用到CHAR*,请各位大侠指导。rn函数说明如下:rn2.3.2 读卡片非认证区信息,即2-7BLOCK的信息 iReadPlantDatarnint iReadPlantData(int handle,int offset,int datalen,char * dataBuf)rn功能:读卡片非认证区信息rn输入:int handle读写器句柄rn int offset:偏移量,为4的倍数,从0-20之间取值rn int dataLen:写入数据的长度,为4的倍数,从4-24之间取值rn[b]输出:char * dataBuf:需要更新的数据,为16进制格式。[/b]rn返回:0,非认证区信息读出正确。rn 非0,错误。rnrnrn我是这样写的(略去无关代码)rn public unsafe class Cardrn rn [DllImport("pumchric.dll", CharSet = CharSet.Auto)]rn public static extern int iReadPlantData(int handle,int offset,int datalen,char * dataBuf);rn rnrn private void button1_Click(object sender, EventArgs e)rn rn char dataBuf; rn i = Card.iReadPlantData(50, 0, 24, &dataBuf);rn textBox2.Text = Convert.ToString(dataBuf);rn rn[b]char * dataBuf这个位置应该保存着一个字符串。[/b]现在程序可以运行,但读出来的是一个乱码(可能是只读了第一个字符??),CHAR*在C#中如何使用?如何改?
c#调用c编写的dll问题,char*
最近在弄一个rfid读卡的测试模块。需要调用c/c++编写的dll。但是一直弄不对,请大侠帮忙rnrndll函数原型rn函数声明 int WINAPI mifs_request_2(uchar _Mode, uchar *_TagType)rn功能描述 寻卡rn入口参数 _ Mode:模式 0x26 rn出口参数 TagType:卡类型rn返 回 值 0—成功,﹥0—失败rnrnrnc#的代码rn函数定义rn [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]rn private static extern int mifs_request_2(rn byte bMode,rn StringBuilder strbCardTypern );rn函数调用rn int iRet;rn StringBuilder strbCardType = new StringBuilder(255);rn iRet = -1;rn for (int i = 0; i < PublicVar.iGL_RetryTimes; i++)rn rn iRet = mifs_request_2(0x26, strbCardType);rn MessageBox.Show(strbCardType.ToString());rn if(iRet == 0)rn break;rn rnshow出来的是乱码,不知道为什么
C#调用非托管dll动态库返回值问题
函数原型:unsigned char* FindToken() 返回值是一个定长8字节的值rnrn我用C#如些调用:rn[DllImport("GDHidUserCtrl.dll", EntryPoint = "FindToken")]rn [return: MarshalAs(UnmanagedType.LPArray, SizeConst = 8)]rn internal static extern byte[] FindToken(); rn public static byte[] getUsbKey()rn rn return FindToken(); rn rnrn但运行时出现如下错误:rn无法封送处理“return value”: 无效的托管/非托管类型组合。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.Runtime.InteropServices.MarshalDirectiveException: 无法封送处理“return value”: 无效的托管/非托管类型组合。rnrn源错误: rnrnrn行 26: public static byte[] getUsbKey()rn行 27: rn行 28: return FindToken(); rn行 29: rn行 30: rn rnrn源文件: e:\UsbKey\App_Code\UsbKeyClient.cs 行: 28 rnrn堆栈跟踪: rnrnrn[MarshalDirectiveException: 无法封送处理“return value”: 无效的托管/非托管类型组合。]rn UsbKeyClient.FindToken() +0rn UsbKeyClient.getUsbKey() in e:\UsbKey\App_Code\UsbKeyClient.cs:28rn testusbkey.Button1_Click(Object sender, EventArgs e) in e:\UsbKey\testusbkey.aspx.cs:20rn System.Web.UI.WebControls.Button.OnClick(EventArgs e) +75rn System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +98rn System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7rn System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11rn System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33rn System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919rnrn 跪求各位高手帮小弟解决此问题,好急人啊!!!
c#调用C++(DLL)返回值一个小问题!
[code=C#]rnc++ 的DLL入口函数:char *func();rnc#调用声明:rn public class oneRouteIpScanrn rn [DllImport("oneRouteIpScan.dll",rn EntryPoint = "oneScan",rn CharSet = CharSet.Ansi,rn CallingConvention = CallingConvention.StdCall)rn ]rn public static extern string oneScan(); //此处的string对吗?我试怎么不行呢??rn rn[/code]
C#调用dll返回值错误问题 (在线等~~)
我调用了一个DLLrn[DllImport("genTac.dll")]rnpublic static extern int genTac(int gICDevId, byte[] keybuf, byte[] databuf, byte[] tacbuf);rnrn这是引用的地方rnbyte[] tacbuf = new byte[300];rnrn string strKeyElements = "1509021410000025";rn stringstr DataStream = "001509021400000002250002011002000004229000000035002008082610502510000025";rnrnrn Byte[] keybuf = Encoding.GetEncoding("gb2312").GetBytes(strKeyElements);rn Byte[] databuf = Encoding.GetEncoding("gb2312").GetBytes(strDataStream); rnrnrn int sl = genTac(icdev, keybuf, databuf, tacbuf);rnSl 本应该为 0 而现在 确不是 同样的代码在vs2005上可以运行,但是vs2003就不行 rn请大家帮帮忙
C#调用DLL返回值是乱码!!
调用DLL返回值是乱码,rnreturn sNewNumberNew;rnsNewNumberNew 为Char*rn在dll一切正常rnC#调用之后就乱码了!rnDLL函数:rnchar* _declspec(dllexport) AutoNumber(char* sTable, char* sFieldName, char* sCode, int nStyle)rnrnc#调用:rnstring strdd = DLLClass.AutoNumber("PersonnelInfo", "id", "N", 2);rnrn请问高手怎么解决?rn
c# 调用c++ dll 返回值为数组指针
如果c++dll的函数返回值为 数组指针,c#这边我需要怎么定义函数,怎么接收呢?rnc++:_declspec (dllexport) float* WINAPI shuju(float pv1[],float pv2[],float pv3[],float pv4[])
C#存储过程的细致使用+接收sql的返回值
一套学员量话管理 内涵数据库存储过程的详细使用 和返回值的接受 存储过程的的细致使用 给你打开思路 对每个对象有细致的划分
调用 DLL 的结果不一致的问题
大家有没有碰到过这种怪现象?我用 C# 调用 纯C 编写的DLL(用 VC6.0 生成),结果跟源程序的运行结果不一致????rnrn请高手指点一二。
C#调用++ dll接收字节流问题
[b][size=13px]大家好,我用C++实现的图片编码生成字节数组,在C++中字节数组是用unsigned char*表示的。rn我在C#中调用这个函数,怎么接收这个字节数组呢?。[/size][/b]rn
怎么拿IntPtr接收SerialPort.
现在有一个SerialPort,进行串口通信.因为同一个设备要同时读取两种卡,会用到两个不同的协议.其中一个方法需要将SerialPort返回为IntPtr.rn请问如何进行转换
要调用返回值是char**的DLL函数,怎么声明啊
求救!
使用C#调用外部dll
使用C#调用外部dllusing System; using System.Runtime.InteropServices; // 用 DllImport 需用此命名空间 namespace Test { class Program { static void Main(string[] args) { //调用 ...
c#调用和使用dll的问题
自写了一个dllrnnamespace aaa.bbbrn class cArn class cBrnrn现放在console项目程序的/下rn我要在/main.cs里调用这个dll,rn我要是直接在/main.cs中using aaa.bbb;或using aaa;不可用rn我把dll放到/aaa/bbb/下,再在/main.cs中using aaa.bbb;或using aaa;也不行,rn提示的错误都是aaa名空间找不到,需要using。rnrn我的console程序,不想使用vs添加引用,rn我觉得调用dll可以把dll放到/下的任何地方,编译器都会自识别的,调用主要是名空间正确就行了,好像记得c语言以前是这样的,这样理解不对吗?c#下应该如何弄才行呢?
c#调用dll,怎么判定dll函数的返回值
int SetTransMode( int mode )rn 功能:rn设置上位机通讯方式rn 参数:rnmode: 通讯模式rn 1:以太网络rn 2:预约播放(将节目保存到SD卡)rn 3:串口 rn 返回值:rn 0: 设置失败rn 1: 设置成功 rndll的名称是ListenComm.dll 我需要调用这的dll里的SetTransMode方法,并判断返回值是0还是1rn求高手帮忙写个代码,分不多谢谢
jni c++ DLL char* 返回值 问题!!!
c++ dll 输出函数如下:rnchar * _stdcall getCountbyzlh(char * ret)rnrn CString temp="aab111"; rn //return (char *)(LPCTSTR)"aab123"; ///这样的是OKrn //return (char *)(LPCTSTR)temp; ////这样也可以rn //但是下面的写法就不行了。rn temp=callmethod(char *);//callmethod 是个函数,返回CString类型rn return (char *)(LPCTSTR)temp; //返回值经过jni dll调用 后,在java中输出返回值为??????????????????????rnrnrnjni dll 调用 如下:rnJNIEXPORT jstring JNICALL getddrn (JNIEnv *env, jobject, jstring, jstring setaa)rnrn rn char * abc="";rn char * aa="";rn jstring jstr;rn char * cc="";rn const char *str="";rn zlhAdd(7,0);rn aa=getCountbyzlh(cc);rn str=aa;rn jstr=env->NewStringUTF(str);rn return jstr;rnrnrn帮忙看看 为什么第三种方法 rntemp=callmethod(char *);//callmethod 是个函数,返回CString类型rn return (char *)(LPCTSTR)temp; //返回值经过jni dll调用 后,在java中输出返回值为??????????????????????rn不行。
c# 调用vc char *
最近调用同事vc写的dll,dll函数参数为(char * xxx,xxx),我在c#调用用string传入数据和stringbuiler传出数据一切都正常。rn现在遇见怎么一个问题,就是在调用这个dll进行处理的时候,如果我要发255字节来处理,都是先将字节数组getstring转化为字符串。但是在发送过程中,我打断点看到有很多'/0'的转译字符,还有另外一个接收端调用这个dll来接收这个数据,就用stringbuilder收到这个字符串,但是在收端我发现,字符串中数据都已经被截断了"sjhg\0\0\0\0\0\djskjdh\00\0\0\0\0\",只有前面的""sjhg"4个字节的数据,收到就不对。是不是在收发时不能使用字符串这种类型,正确应该用什么类型呢?关键要能和vc dll的 char *能传过去,请教诸位大侠了,急!
C# IntPtr 问题
我有一结构如下:rn [StructLayout(LayoutKind.Sequential)]rn public struct PEventrn rn public byte Code;rn public byte DotID;rn public TCardNumber CardNumber;rn public ushort reserved;rn public Time Time;rn public IntPtr pNext; rn rn关于最后面 public IntPtr pNext;想问下大家:rnrn DPU3001EG.PEvent lpNext = new DPU3001EG.PEvent();rn lpNext = lpNext.pNext; 这句他提示rn“错误1 无法将类型“System.IntPtr”隐式转换为“DPU3001EG.PEvent”E:\依柯通\DPU3001EG\Form1.cs 502 34 DPU3001EG”rnrn我该怎么解决呢??
C# IntPtr转为结构数组
这个是接口:rnLWNETINTERFACE_API BOOL __stdcall LW_NET_DeviceDiscover(char *pBuf, int *pLen, UINT nTimeWait = 3000);rn rn [out]pBuf: 用户开辟缓存,用来接收 LW_SEARCH_RESULT 结构体,查询到几个设备,就返回几个这样的结构体。rn [in/out]pLen:pBuf 缓冲区的长度/返回有效数据长度。单位为字节。rn [in]nTimeWait:查询持续时间,单位毫秒。比如 byte数组rnrn我用C# 调用这个接口后,怎么处理这个数据,这个数据明显要分成几个结构的··rn请问 怎么搞啊?给点思路··谢谢大家··
c#调用DLL中char*应该怎么调用
[DllImport("ICcard_dll.dll",CharSet=CharSet.Ansi)]rnpublic static extern int Init_com(char* set);rnrn我用rn [DllImport("ICcard_dll.dll",CharSet=CharSet.Ansi)]rn public static extern int Init_com(string set);rn string StrConnect="1,9600,N,8,4";rn iret = Init_com(StrConnect);rnrn这样用rn [DllImport("ICcard_dll.dll",CharSet=CharSet.Ansi)]rn public static extern int Init_com(ref char set);rn string StrConnect="1,9600,N,8,4";rn 要怎么把string数据在c#中表示成char*呢?rn这样会说参数出错。rn我该怎么用呢,高手救命啊!rn
C# 数组转Intptr
在c++里数据转指针是很容易的,但是在托管代码里,转起来就比较费劲了。转换方法如下: internal static IntPtr ArrayToIntptr(byte[] source) { if (source == null) return IntPtr.Zero; unsafe {
IntPtr在C#中是什么?
IntPtr在C#中是什么?rn为什么windows api在.net不好用了,一点都不方便了,还没有vs6.0用起来方便
go 调用dll char*传输
参考:http://www.voidcn.com/article/p-ofnbgvoa-bpv.html https://stackoverflow.com/questions/53721215/syscall-mustloaddll-mustfindproc-throws-the-specified-procedure-could-not-be-fo c++: MYLIBDLL ch...
.NET调用DLL返回值问题
DLL方法名:GetParam rn[功能定义]rnHRESULT WINAPI GetParam(HANDLE pDataHandle, LPCTSTR paramName, LPTSTR ParamValue, UINT nMaxValueLenth)rn[功能描述]rn 该接口函数用于取返回参数。rn[参数说明]rn HANDLE pDataHandle:功能调用的处理句柄,由接口函数CreateInstace()创建。rn LPCTSTR paramName:返回变量的参数名称。rn LPTSTR ParamValue:保存返回值的变量。rn UINT nMaxValueLenth:变量ParamValue的分配内存字节数。rn==================================================================rnC# Codern[code=csharp]声名:rn [DllImport("HNBridge.dll")]rnpublic static extern long GetParam(long pDataHandle, string paramName,rnref StringBuilder prtStr, int nMaxValueLenth);rn[/code]rn调用:rn[code=csharp]rn StringBuilder mes= new StringBuilder(1024);rn his_result = GetParam(handle, "MSG",ref mes, mes.Capacity);rn[/code]rnrn[color=#FF0000]为什么mes总是获取不到返回值,求大神打救。怎样才能获取到返回值???[/color]rnrn
关于DLL调用的返回值问题
我在程序中调用了一个DLL,我想知道什么时间释放了对这个DLL的调用,该怎么实现呀!

相似问题

1
关于宇视网络摄像头SDK解码问题
3
c# 调用c++ sdk 传结构体指针
3
USB_2066数据采集卡ReadAD()函数读取的数据为什么全是32767啊?
4
(图像采集)C++转C#如何实现
1
未能加载文件或程序集“CYQ.Data”或它的某一个依赖项。
4
C#调用C++的dll,C++程序中给结构体中变量赋值this指针,对应C#中应该怎么写呢?
2
释放intptr内存资源,是不是应该对内存清零?再次用这块内存的时候会返回上一次的数据
1
使用ubuntu编译 ffmpeg 时报错:ERROR: x265 not found using pkg-config
2
C# 指向结构体的指针释放,那结构体里面的指针还需释放吗?
0
C#windows服务 弹出一个ui窗体程序无法获取管理员权限
0
WIMGAPI的WIMApplyImage相关问题(VB.net),求大神帮忙看看
0
基础连接已经关闭: 服务器关闭了本应保持活动状态的连接
3
请教一个关于c++DLL供C#调用的代码,是否会出现内存泄漏的问题
3
WPF程序运行在windows10 x64电脑上,偶尔在点击时奔溃闪退
1
C# 调用C++ DLL 参数OpenCvSharp.Mat如何传递
2
未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块。
1
winform 在win7环境下 单独隐藏或者禁用左下角的开始菜单 保留其他
1
C# 键盘钩子怎么获取两个任意的组合键!!!!!!!
0
以下C++代码如何翻译成C#代码?
0
软件登录时提示System.NullReferenceException未被引用到实例