如何调用我做的dll中的函数? 第一次做dll,输出了个ShowMe函数,我要在VC中调用它,该如何操作?我用GetProAddress函数,得到了它的地址,然后该怎么去做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ² DLL的调用好,下面我们就用VC写个程序调用它。在调用的函数中,首先要获得DLL的句柄,有如下语句:HINSTANCE dllinstance;dllinstance=::LoadLibrary(strDllUrl);if(dllinstance==NULL) AfxMessageBox("can't open dll file"); 其中strDllUrl是mydll.dll路径的字符串,这样程序才能找到它。::LoadLibrary获得参数标识的DLL文件的句柄。 获得句柄后,下面要获得函数地址以便执行它。有如下语句: FARPROC proc; proc=GetProcAddress(dllinstance,"go"); if(proc==NULL) AfxMessageBox("can't find function"); else proc();FARPROC是一个远程过程指针,通过GetProcAddress获得函数的地址。它的两个参数就是dll文件句柄和函数的名字了。然后FARPROC就可以和go一样的使用了,它就是go ,go 就是它。而对于带参数的DLL中的函数,调用方法有所不同。因为对函数的调用是通过对它地址的引用进行的,这样,传入参数对不对,在函数调用程序的编译和联接过程中,无法知道其正确性。因此,要在调用程序中对DLL中带参数的函数做个声明,如mydll中的went,我们要做个声明如下:typedef void (FAR __cdecl *MYWENT)(CString);然后以类型MYWENT声明变量既可调用,如下: MYWENT myproc; myproc =(MYWENT)GetProcAddress(dllinstance,"go"); if(myproc ==NULL) AfxMessageBox("can't find function"); else myproc (“o-----yeah---------”);注意声明的时候呢,由于DLL中WENT的定义为C语言调用规范,因此MYWENT前一定要用__cdecl,而VC中常用的__stdcall是PASCAL调用规范,不可以的。一定要注意。 在线等待vc源程序复制到另个地方打开程序没有类库了 关于侦听线程弹出对话框的问题 MFC picture 控件上画图,不是load图 问一下基于udp的文件传输,包越大,丢包后重发的成本越高吗? mfc程序:动态链接出错,静态链接成功! cout 不支持输出中文? 请问哪有关于CAD软件开发的网站或书籍 说一下MSDE的用法 win7,win8系统文件夹下删除或者写入文件失败 关于打印的问题,我都想了一个星期了请各位大侠帮小弟一把!!! 头文件交叉引用了怎么办?可是不这么做又没好办法。各位帮我看看 恳请帮助:有关配置文件的操作!!!!!!!!!!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货