请教一个DLL调用时参数的问题

问题描述

有一个第三方的dll文件File.dll,里面有一个函数,提供者提供了如下信息intDecompressToStrEx(char*szFile,char*pOutBuffer,int*pOutBufferSize);参数szFile:要解压缩的文件路径、名称;pOutBuffer:接收输出解压数据的内存指针;pOutBufferSize:整数指针,指向的值为这块输出内存的大小。问题来了,我在vb.net里面调用它的时候,我dllimport的时候,应该如何里面的参数进行定义<DllImport("File.dll",SetLastError:=True)>_PrivateSharedFunctionDecompressToStrEx(szFileasstring,pOutBuffasstring,pOutBufferSizeasinteger)AsintegerEndFunction这样不行啊?应该怎么改呢?

解决方案

本帖最后由 spark_li 于 2015-11-02 20:49:53 编辑
解决方案二:
PrivateSharedFunctionDecompressToStrEx(szFileasstring,pOutBuffasStringBuider,ByRefpOutBufferSizeasinteger)AsintegerEndFunction
解决方案三:
郁闷,不行啊
解决方案四:
后两个参数和GetWindowText一样,参考这个例子,用StringBuilder。

时间: 2024-09-15 00:43:32

请教一个DLL调用时参数的问题的相关文章

C#调用DLL文件时参数对应表

Wtypes.h中的非托管类型 非托管 C语言类型 托管类名 说明 HANDLE void* System.IntPtr 32 位 BYTE unsigned char System.Byte 8 位 SHORT short System.Int16 16 位 WORD unsigned short System.UInt16 16 位 INT int System.Int32 32 位 UINT unsigned int System.UInt32 32 位 LONG long System.

请教一个C#调用C++ DLL的问题

问题描述 C#中调用C++写的DLL,用DllImport好像只能用它的一些methods,如果想调用class的构造函数去生成一个新的object, 可行吗?有什么办法啊 谢谢!!! 解决方案 解决方案二:up解决方案三:这个...用C++/CLI做一层封装吧

请教一个同一页面传递参数问题

问题描述 我现在有两个页面,一个是文章管理,一个是评论管理,两个都是用GridView做的,现在从文章管理那里传递一个参数到评论管理,一开始跳到评论管理页面时能获取到ID,可显示数据,可是在评论管理做删除等操作跳回原来的页面时却获取不了传过来的ID,数据显示不出来,怎么解决protectedvoidButton1_Click(objectsender,EventArgse){for(inti=0;i<GridView1.Rows.Count;i++){if(((CheckBox)GridView

dll调用时 权限问题

问题描述 在用户自定义的低权限用户下,C#程序调用vb编写的dll时,提示拒绝访问!正常的用户下能正常运行是不是mathine.config的问题啊?请各路高手指点迷津. 解决方案 解决方案二:该回复于2009-08-18 16:02:36被版主删除

nvoke-请教一个VC调用JS的问题

问题描述 请教一个VC调用JS的问题 请教一个问题,我用VC调用JS, 我用的是WEBSOCKET长连接,我第1次调用SendData,会收到1个返回data, 第2次用,却会收到2个返回(正确的应该只有1个),第3次收到3个返回... 这个HTML在浏览器中使用是正常的,而我用VC调用的时候就不正常了,这是为什么? JS代码: //接收服务器返回值 socket.on('message', function(data){alert(data);}; //发送数据 function SendDa

c#-C#调用C DLL(char *传出参数)时,报错参数不匹配

问题描述 C#调用C DLL(char *传出参数)时,报错参数不匹配 public class LLht { //手持机下载上传 [DllImport(""llht.dll"" CallingConvention = CallingConvention.StdCall CharSet = CharSet.Ansi SetLastError = true ExactSpelling = true)] public static extern int llht_dow

pe-如何让一个exe运行时调用同目录的dll的api

问题描述 如何让一个exe运行时调用同目录的dll的api 我用pe工具把api添加到了输入表,但是运行时没有调用哪个dll,因为那个api是在目录下创建一个文件,而运行后没有创建 解决方案 用loadlibrary动态加载,或者链接.lib文件并且包含.h文件. 没有创建文件检查下是没有调用成功还是调用出错.不一定是没有调用. 解决方案二: LoadLibrary可以加载dll,你直接写上dll的名字,它就会到当前目录区找dll

调用C++dll,需要传入一个函数指针,函数参数含有数组指针,用于传回数据,怎么老说我访问内存非法呀.

问题描述 C++dll代码回掉函数类型:voidcallback(BYTE*data,intnlen)//DLL设置回调函数voidSetCallBackFunc(CALL_BACK_FUNCcallback){m_callback=callback;}//dll调用回掉函数向C#传回数据voidStartDll(){BYTEbtData[100];for(bytei=0;i<100;i++){btData[i]=i;}m_callback(btData,100);//将数据通过回掉函数传回C#

请教大家,工作流引擎怎样来实现内核数据的持久化?我想用一个DLL来建立STEP队列,其它DLL文件调用它存取。

问题描述 我现在急着要做一个工作流引擎,想在一个专门DLL(A)模块中建立工作项队列并提供存取的接口函数,其它DLL模块调用这些函数,怎样才能使这个队列中的数据持久化,也就是一个DLL(B)模块调用DLL(A)写入数据后,DLL(C)这个模块能调用DLL(A),把刚刚写入的数据读出.如果有其它方法来实现,欢迎各位大虾赐教 解决方案 解决方案二:内存持久化就建一个Queue或者ArrayList,有这样的数据类型的,磁盘的话要数据库解决,另外微软已经做了一个WF引擎,学习一下微软的就可以了,不必自