请教如何在VC中引用一个dll文件 请教如何在VC中引用一个dll文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先用LoadLibrary加载DLL,再用GetProcAddress函数检取其输出函数的地址,获得其指针来调用。如:HANDLE hLibrary;FARPROC lpFunc;int PortValue;hLibrary=LoadLibrary("PORTDLL.DLL"); //加载DLLif(hLibrary>31) //加载成功 { lpFunc=GetProcAddress(hLibrary,"PortIn"); //检取PortIn函数地址 if(lpFunc!=(FARPROC)NULL) //检取成功则调用 PortValue=(*lpFunc)(port); //读port端口的值 FreeLibrary(hLibrary); //释放占用的内存} 除了楼上的显式加载DLL外还有隐式加载隐式加载的时候需要将.lib文件加入到工程中,然后在包含相应的头文件就行了!希望对你有所帮助! dll中extern "C" __declspec(dllexport) void test();主程序中typedef bool WINAPI test(); static HINSTANCE hinstDLL; test* testb;if( hinstDLL=LoadLibrary( (LPCTSTR)"client.dll") ){ testb=(test*)GetProcAddress(hinstDLL, "test"); }另 看dll中函数的方法:VC工具中的Depends 显式加载如楼上所说的,隐式加载的则要包含lib文件,且要在DLL中这样extern "C" __declspec(dllexport) void Fun();在用到的地方要包含其头文件且要这样extern "C" __declspec(dllimport) void Fun();其中extern "C"的作用是为了防止编译器的名字改编机制,是为了使导出和导入的函数名一致! 如果你有.h和.lib文件就好办了,包含.h就可以直接调用。如果只有.dll的话,你必须的知道.dll的导出函数的格式。如我们知道一dll是mydll.dll中有一导出函数int WINAPI add(int a,intb)调用如下:#include<windows.h>HANDLE hLibrary;typedef int (WINAPI *ADD)(int a,int b);hLibrary = LoadLibrary("mydll.dll");ADD add;add = (ADD)GetProcAddress(hLibrary,"add");这样以后就可以这样来调用了如:i = add(3,5) 显式调用还是隐式调用?正规dll扩展dll还是com的dll?以后提问清说清楚 MFC访问WebService时。string类型出错,急求大家帮忙!! VC移植到EVC问题 菜鸟问题,怎么去掉这个warning?VC++6.0是不是不能很好地支持C++标准? 今天遇到了88888的验证码,开心散分88! 如何获取系统盘盘符?请不吝指教! Conncetion.Open()函数的参数解释 ****散分,顺便听听各们意见**** 呵呵~~,问个很菜的:) 请指点:我定义的struct和初始化为什么不对? 大家注意拉,送分来了~~~ 如何让某个静态文本或编辑框改变字体和背景颜色???(等待) 请问如何对文件名字符串进行排序可以得到和资源管理器中按文件名排序相同的效果?
其指针来调用。如:
HANDLE hLibrary;
FARPROC lpFunc;
int PortValue;hLibrary=LoadLibrary("PORTDLL.DLL"); //加载DLL
if(hLibrary>31) //加载成功
{
lpFunc=GetProcAddress(hLibrary,"PortIn"); //检取PortIn函数地址
if(lpFunc!=(FARPROC)NULL) //检取成功则调用
PortValue=(*lpFunc)(port); //读port端口的值
FreeLibrary(hLibrary); //释放占用的内存
}
隐式加载的时候需要将.lib文件加入到工程中,然后在包含相应的头文件就行了!
希望对你有所帮助!
extern "C" __declspec(dllexport) void test();主程序中
typedef bool WINAPI test(); static HINSTANCE hinstDLL;
test* testb;if( hinstDLL=LoadLibrary( (LPCTSTR)"client.dll") )
{
testb=(test*)GetProcAddress(hinstDLL, "test");
}另 看dll中函数的方法:VC工具中的Depends
隐式加载的则要包含lib文件,且要在DLL中这样extern "C" __declspec(dllexport) void Fun();
在用到的地方要包含其头文件且要这样extern "C" __declspec(dllimport) void Fun();
其中extern "C"的作用是为了防止编译器的名字改编机制,是为了使导出和导入的函数名一致!
如果只有.dll的话,你必须的知道.dll的导出函数的格式。
如我们知道一dll是mydll.dll中有一导出函数int WINAPI add(int a,intb)
调用如下:
#include<windows.h>
HANDLE hLibrary;
typedef int (WINAPI *ADD)(int a,int b);
hLibrary = LoadLibrary("mydll.dll");
ADD add;
add = (ADD)GetProcAddress(hLibrary,"add");
这样以后就可以这样来调用了如:
i = add(3,5)
扩展dll
还是com的dll?以后提问清说清楚