有DLL和LIB,怎样隐示调用dll? 没有.h文件。能自己做一个出来吗?具体实现详细步骤呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在SETTING选项中link 中把LIB文件写进去 要找一个分析dll和lib的工具得到dll中函数得名字然后用LoadLibrary(),和GetProcAddress() 给你一个例子看一看! bool is = false; typedef bool(* FindRes)(UINT resid); HINSTANCE m_hLibrary; m_hLibrary = LoadLibrary("MISDLL.dll"); if(m_hLibrary==NULL) { MessageBox(NULL,"丢失MISDLL.dll动库!","错误",MB_OK|MB_ICONSTOP); return false; } FindRes lpproc; lpproc = (FindRes)GetProcAddress (m_hLibrary, "GetExist"); if(lpproc != (FindRes)NULL) { is = (*lpproc)(resid); } FreeLibrary(m_hLibrary); return is; 静态连接用的是*.lib文件函数实现代码全在其中,加入工程包含.h即可,最终exe文件将包含.lib的代码动态连接用的是.dll文件生成的exe文件没有包含其调用dll函数的代码其中只有调用函数的入口地址,所以最终要将.dll一起发布动态连接分显示调用 就是LoadLibrary,GetProcAddress,FreeLibrary(你搞反了)来调用相应的函数,此时不需要*.lib 文件在vc生成dll同时会有个lib文件,它与静态连接的lib有些不同,此时的lib文件只是包含了在对应dll文件函数的入口地址而没有函数的实现代码,所以你将lib加入工程,只要相应dll存在,就可以直接调用,其实这时的lib文件就相当于LoadLibrary,GetProcAddress,函数,这就叫隐式连接因为它没有明确使用LoadLibrary,GetProcAddress函数来调用动态连接库,当然你要有.h文件,也就是函数原形其实没有.h也可以,就是你要知道函数类型,原形,自己定义一个就可以了,在把.lib包含进来。所谓的.h里定义的都是函数的原形,就想 LuckFox(小狐狸) 的例子中如果隐士调用则如下.hbool GetExist(UINT resid);然后把include .h 把.lib 包含进来注意这个GetExist必须在.lib中有。 有个dll2lib软件,能自动生成lib和.h 首先想办法知道函数格式,自己写个头文件,然后#inclue "yourheader.h"#pragma comment(lib,"youlibname") 请教能绘曲线的控件 请教CSplitterWnd拆分窗口的问题 boundschecker V7.2不显示错误行怎么解决,只有"no source file" 在线急等,编译出错,这是为什么?帮忙看一下吧,小女子先谢了 如何实现单写多读锁,附现有的代码,和测试程序 有关radio button的问题。 玩D版仙剑2的兄弟们,现有一法不用拔掉光驱数线或禁用ide2接口。请看! 关于CFileDialog的问题 !!!创建了信号量,为何找不出以前的窗口?(附源码) vs2005 读取EXCEL2007中数据 通过程序名称,如何得到它的进程句柄,ID? 怎样得到可执行文件实例句柄
然后用LoadLibrary(),和GetProcAddress()
bool is = false;
typedef bool(* FindRes)(UINT resid);
HINSTANCE m_hLibrary;
m_hLibrary = LoadLibrary("MISDLL.dll");
if(m_hLibrary==NULL)
{
MessageBox(NULL,"丢失MISDLL.dll动库!","错误",MB_OK|MB_ICONSTOP);
return false;
} FindRes lpproc;
lpproc = (FindRes)GetProcAddress (m_hLibrary, "GetExist");
if(lpproc != (FindRes)NULL)
{
is = (*lpproc)(resid);
}
FreeLibrary(m_hLibrary);
return is;
动态连接用的是.dll文件生成的exe文件没有包含其调用dll函数的代码其中只有调用函数的入口地址,所以最终要将.dll一起发布
动态连接分显示调用 就是LoadLibrary,GetProcAddress,FreeLibrary(你搞反了)来调用相应的函数,此时不需要*.lib 文件
在vc生成dll同时会有个lib文件,它与静态连接的lib有些不同,此时的lib文件只是包含了在对应dll文件函数的入口地址而没有函数的实现代码,所以你将lib加入工程,只要相应dll存在,就可以直接调用,其实这时的lib文件就相当于LoadLibrary,GetProcAddress,函数,这就叫隐式连接
因为它没有明确使用LoadLibrary,GetProcAddress函数来调用动态连接库,当然你要有.h文件,也就是函数原形其实没有.h也可以,就是你要知道函数类型,原形,自己定义一个就可以了,在把.lib包含进来。
所谓的.h里定义的都是函数的原形,就想 LuckFox(小狐狸) 的例子中如果隐士调用
则如下
.h
bool GetExist(UINT resid);
然后把include .h 把.lib 包含进来
注意这个GetExist必须在.lib中有。
#inclue "yourheader.h"
#pragma comment(lib,"youlibname")