社区
进程/线程/DLL
帖子详情
高分请教***如何调用dll??
hundlom
2004-10-28 12:07:52
有一个readkey_dll.dll文件,接口是这样:
INT ReadKey(CHAR *SET,CHAR *RDATA,INT CMD)
请分别用显式调用和隐式调用两种方法来调用
...全文
223
18
打赏
收藏
高分请教***如何调用dll??
有一个readkey_dll.dll文件,接口是这样: INT ReadKey(CHAR *SET,CHAR *RDATA,INT CMD) 请分别用显式调用和隐式调用两种方法来调用
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddgfei
2004-10-29
打赏
举报
回复
up
hundlom
2004-10-29
打赏
举报
回复
我用typedef定义了啊,是不是用其他语言写的dll文件在没有lib的情况下用显式调用?如果有lib文件最好用隐式??或者谁能把这再总结以下...
oyljerry
2004-10-29
打赏
举报
回复
用typedef定义函数指针
hundlom
2004-10-29
打赏
举报
回复
jazy():这个没问题,我用工具查找过了,并且有说明文档。
oyljerry(☆勇敢的心☆-要开始写论文了): 跟踪测试,dll文件加载成功。
edrftgyh(老胡) :“(FARPROC&)”是那里定义的?( WINAPI*pRead)这个要和dll里的定义对应,但我们看不到dll是如何定义输出的呀。虽然说用WINAPI通用性好,但这个有可能是其他语言写的dll呀。
////////////////
谢谢以上各位兄弟的热心帮助,
但我的问题还是没解决,----显式调用为什么不成功?
lhrmylove
2004-10-29
打赏
举报
回复
up up u pup
linxy2002
2004-10-29
打赏
举报
回复
他们已经说的很清楚了啊,如果调用还出错了,那可能是你的DLL写的有问题,用depends看一下啊
hundlom
2004-10-28
打赏
举报
回复
char *RDATA = new char[300];
typedef int( *pRead)(char*, char*, int);
HINSTANCE hDll=NULL;
pRead tRead=NULL; //定义新的函数名称
HINSTANCE hinstDll=GetModuleHandle("readkey_dll.dll");
if(hinstDll==NULL)
{
hDll=LoadLibrary("readkey_dll.dll");
}
tRead=(pRead)::GetProcAddress(hDll,"Readkey");
*************************************************
那我这样写又有什么错呢?
----答案这样写运行不通,不知道为什么。
kugou123
2004-10-28
打赏
举报
回复
同意1楼。
调用的时候,注意把dll拷贝到你的编译目录下,如果你用debug,就拷贝到debug目录,如果你用release,就拷贝到release目录。
Micro_Sheng
2004-10-28
打赏
举报
回复
对于显式调用时,对hDLL进行判断一下更好
楼猪,Good Luck!
hundlom
2004-10-28
打赏
举报
回复
谢谢,光临显式调用我测试了,失败,为什么?
Micro_Sheng
2004-10-28
打赏
举报
回复
/************************显式*************************/
typedef INT(*pReadKey) (CHAR *SET, CHAR *RDATA, INT CMD);
HINSTANCE hDLL;
pReadKey ReadKey;
HDLL = LoadLibrary("readkey_dll.dll"); //加载动态链接库readkey_dll.dll文件;
ReadKey = (pReadKey)GetProcAddress(hDLL, "ReadKey");
//此处就可以调用ReadKey了
FreeLibrary(hDLL); //卸载readkey_dll.dll文件;
/************************隐式*************************/
#pragma comment(lib, "readkey_dll.dll")
extern "C" INT PASCAL EXPORT ReadKey(CHAR *SET,CHAR *RDATA,INT CMD);
sinall
2004-10-28
打赏
举报
回复
大家都说完了。。。o 0
edrftgyh
2004-10-28
打赏
举报
回复
int( WINAPI*pRead)(char*, char*, int);
HINSTANCE hDll=NULL;
hDll=LoadLibrary("readkey_dll.dll");
if(hDll)
{
(FARPROC&)pRead = GetProcAddress(hDll,"Readkey");
if(pRead)
{
//调用即可
}
}
另外要注意dll的路径是否正确,还有def文件要记得导出!
oyljerry
2004-10-28
打赏
举报
回复
看你的函数是否加载成功了
hundlom
2004-10-28
打赏
举报
回复
隐式链接可以,但不知道为什么?
oyljerry
2004-10-28
打赏
举报
回复
隐式链接是否可以
jazy
2004-10-28
打赏
举报
回复
用depends查看真正的函数名是不是被加了修饰,导致"Readkey"这个名字找不到?
oyljerry
2004-10-28
打赏
举报
回复
LoadLibrary("readkey_dll.dll");
基础
高分
请教
如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)...
Network Thread
怎样让控制台程序也能处理消息?到底这样可以吗?请高手指点。我在多线程中使用CSocket的,怎么老是出错,请大家帮我看看!VC中使用IXMLHTTPRequest获取URL...300分
请教
如何向DNS查询MX记录(SDK+socket)那位仁兄有在
vb/vb.net开发精粹(10)
dll
类中声明public变量在该
dll
添加的窗体中如何
调用
VB6 类模块,再引用另一个类模块的问题 MsgBox a$, ,b$,c$为什么调试不通?
请教
AUTOCAD+vba问题——区域复制/镜像 如何获取本机IP 为什么vb中显示不了...
CSDN回帖得分大全(近两年)
√vs2005
调用
dll
的时候Initialize()函数返回错误 [VC/MFC 基础类] 40 ylongwu 05-21 20:486 ylongwu06-28 13:42管理√为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] 40 ...
VC++中可能遇到的问题
T 如何用程序控制电源管理设置 Q 我们知道在电源选项 属性 里面可以设置 关闭监视器 1分钟之后,...,从不 关闭硬盘 1分钟...是不是要
调用
API?如果是,应该
调用
什么函数?另外补充说明:如果是调出控制面板让用户自
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章