求助,关于通过委托进行模块调用 委托Dll中的导出函数的问题

关于调用dll中的多个函数的问题!!!_百度知道
关于调用dll中的多个函数的问题!!!
我现在想调用ffmpeg中的函数,现在已经有了lib,.h和dll,调用没有参数的的函数时没有问题,但是调用有参数的函数时就会出现: error C2197: 'int (__stdcall *)(void)' : too many actual parameters,希望哪位高手能给解决!!在线等待
谢谢各位的回答,我已经自己解决了问题!!
我有更好的答案
参数匹配 链接库中函数的原型 和实参调用的不一致'identifier' : too many actual parametersThe specified function was called with too many parameters, or the function declaration was incorrect.The following is an example of this error:void func( int );main(){
func( 1, 2 );
// error, two actual parameters}
采纳率:18%
too many actual parameters这句话的意思是有太多的实际参数你自己看下是不是参数类型不匹配或者填写了更多的参数希望对你有帮助
仔细查看.h头文件导出函数原型声明,使用DLL函数一般都是用函数指针来搞的。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请教高手,有关动态链接库DLL导出和调用对话框类的问题!_百度知道
请教高手,有关动态链接库DLL导出和调用对话框类的问题!
我的问题是:第一步:在用规则DLL 时编写了一个带有对话框类的DLL(用的是__declspec(dllexport)导出这一个对话框类),注:由于需要在外面对这个对话框类做一些操作,因而想避免使用导出调用对话框类函数的方法导出这个对话框类。第二步:在应用程序里面,我...
我有更好的答案
规则DLL的资源与应用程序的资源是独立的,好处是资源符号不会相互影响,例如DLL中有个100号的对话框,应用程序中也可以有100号对话框;缺点是不能简单在应用程序中直接使用DLL的资源,需要先调用AfxSetResourceHandle函数,将当前的资源句柄设置为DLL的Instance,显示完对话框后,再设置回应用程序的Instance。像你这种使用,为啥不用MFC 扩展DLL?这种DLL可以将DLL和应用程序的资源合并,缺点正好和规则DLL相反,就是要规划好资源符号的数值,不可冲突。
采纳率:71%
近日由于项目需要,在MFC动态链接库里建立一个DLL文件遇到了很大困扰。首先,...望高手帮解决 ...将原工程中#include &Resource.h&中的 #define IDD_...
上边说的方法我也尝试了,虽然不报错,但是却调不出来对话框资源,就是点击调用DLL的按钮没有什么反应,我估计是从新定义的话找不到原来的资源,望高手详解,谢了
为您推荐:
其他类似问题
动态链接库的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求助:C#动态调用DLL的,为什么getProcAddress无法获得NATIVE DLL中的导出函数?
作者:用户
浏览:328 次
①自己用C++写了个DLL在其中声明了一个导出函数extern"C"__declspec(dllexport)LRESULTCALLBACKhookProc(intnCode,WPARAMwParam
问题描述①自己用C++写了个DLL在其中声明了一个导出函数extern"C"__declspec(dllexport)LRESULTCALLBACKhookProc(intnCode,WPARAMwParam,LPARAMlParam){//实现内容忽略return1;}生成DLL后,因为是C++编译器编译的,会改变方法名,于是我用了VIEWDLL查看了导出函数名称叫_hookProc@12②调用DLL代码[DllImport("kernel32.dll",CharSet=System.Runtime.InteropServices.CharSet.Auto)]privateexternstaticIntPtrLoadLibrary(stringpath);[DllImport("kernel32.dll",CharSet=System.Runtime.InteropServices.CharSet.Auto)]privateexternstaticIntPtrGetProcAddress(IntPtrHandle,stringfuncName);//获取DLL的模块句柄IntPtrhandleDll=LoadLibrary("D:\VSproject\cplusplusPro\myDll1\Debug\EmrMHdll.dll");//获取方法的地址IntPtrhandleOfHookproc=GetProcAddress(handleDll,"_hookProc@12");这个时候发现使用getProcAddress返回的值是0,原因未知③因为用C#动态调用,找不到原因,没办法,我又用C++试了试,结果能够正确的返回导出函数的地址代码如下HMODULEhd=LoadLibrary(L"D:\VSproject\cplusplusPro\myDll1\Debug\EmrMHdll.dll");HOOKPROChookProc=(HOOKPROC)GetProcAddress(hd,"_hookProc@12");我的C#代码中有什么问题么?C#该怎么调用GetProcAddress,才能够正确的返回DLL中函数地址呢?解决方案解决方案二:Marshal.GetLastWin32Error解决方案三:问题解决了,参考网上其他人的代码别人是用创建一个类,把LoadLibraryGetProcAddress都放进去就没问题了这个类很简单,贴到下面,原因的话我也搞不太清楚,或许是CLR的原因?进来讨论讨论吧,过两天就结贴给分usingSusingSystem.Collections.GusingSystem.LusingSystem.TusingSystem.Runtime.InteropSnamespaceConsoleApplication1{publicclassDllInvoke{#regionWinAPI[DllImport("kernel32.dll")]privateexternstaticIntPtrLoadLibrary(stringpath);[DllImport("kernel32.dll")]privateexternstaticIntPtrGetProcAddress(IntPtrlib,stringfuncName);[DllImport("kernel32.dll")]privateexternstaticboolFreeLibrary(IntPtrlib);#endregionprivateIntPtrhLpublicDllInvoke(StringDLLPath){hLib=LoadLibrary(DLLPath);}~DllInvoke(){FreeLibrary(hLib);}//将要执行的函数转换为委托publicDelegateInvoke(stringAPIName,Typet){IntPtrapi=GetProcAddress(hLib,APIName);return(Delegate)Marshal.GetDelegateForFunctionPointer(api,t);}}}
【云栖快讯】青年们,一起向代码致敬,来寻找第83行吧,云栖社区邀请大神彭蕾、多隆、毕玄、福贝、点评Review你的代码,参与互动者将选取50位精彩回复赠送“向代码致敬”定制T恤1件,最终成为“多隆奖”的小伙伴还将获得由阿里巴巴提供的“多隆奖”荣誉证书和奖杯。&&
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备新手求助DLL导出函数问题_百度知道
新手求助DLL导出函数问题
我有更好的答案
运行库组件你可以在腾讯电脑管家的电脑诊断中找到软件问题,选择丢失VC++组件,点击立即修复。或在工具箱,打开电脑诊所,丢失.Dll 文件,进行一键修复
采纳率:94%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于dll内含函数的调用的问题
[问题点数:0分]
关于dll内含函数的调用的问题
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|

我要回帖

更多关于 模块调用 委托 的文章

 

随机推荐