有那为仁兄告诉我怎样调用自己DLL文件中的函数。
解决方案 »
- 关于子窗口的关闭问题
- 用exescope打开DLL文件 为什么里边的函数名是乱码?
- VC中如何设置窗口在最前。
- 不会用list修改记录,哪位给个例子?
- 我写了一个组件但是编译时候出现一下错误:unexpected end of file while looking for precompiled header directive。请问是什么原因?
- 请问如何传递函数指针
- 实在搞不定了,大虾救助,如果搞定,全分相送
- 可改变大小的对话框
- 20
- 请问如何给splitewindow窗格加上一个标题条呀?
- 游戏编程,用MFC的好处何在呢??
- 资源中新建了一个彩色光标,怎么实际加载的时候不显示呢?什么也没有了!
// a function "MyFunction()" in your own dll file"C:\mydll.dll";HINSTANCE hInstance;
typedef MYFUNCTION *(void);
MYFUNCTION lpMyFunction;
hInstance=LoadLibrary("C:\\mydll.dll");
lpMyFunction=(MYFUNCTION)GetProcAddress(hInstance,"MyFunction");
lpMyFunction();// call the function in the dll;...FreeLibrary(hInstance);
GetProcAddress
FreeLibrary
typedef 函数返回值类型 (*FUN)(函数参数列表);
HINSTANCE hdll;
FUN fun;
hdll=LoadLibrary("文件路径");
fun=GetProcAddress(hdll,"函数名");
fun(参数);
如果有.h和.lib就和普通的调用类中的函数是一样的。
http://www.codeproject.com/dll/dllease.asp
http://www.codeproject.com/dll/dynamicdllloading.asp
http://www.codeproject.com/useritems/dll_calling.asp
显示调用比较麻烦了,给你个例子看,
//--定义“实例”
HINSTANCE Dll_handler;//--声明dll内的函数
typedef BOOL (*DLLTEST)(int nPort, int nBaud, int nByte, int nParity);
DLLTEST CommOpen;;
//--装载dll
Dll_handler = LoadLibrary("Commpro.dll"); CommOpen = (DLLTEST)GetProcAddress(Dll_handler,"CommOpen");//--取得dll中的函数地址
CommOpen(m_nPort,m_nBaud,m_nByte,m_nParity)
FreeLibrary(Dll_handler);
如果想要例子的话[email protected]
或者网上好多例子呢,vchelp ,vckbase
{
if((hHS_Dll=::LoadLibrary("HSCOS.dll"))== NULL ) return LastStatus = HS_LOADDLL_ERROR;
if((HS_Close=(pHS_Close)::GetProcAddress((HMODULE)hHS_Dll,"IFD_Close")) == NULL ) return LastStatus = HS_LOADDLL_ERROR;
if((HS_Create_End=(pHS_Create_End)::GetProcAddress((HMODULE)hHS_Dll,"Create_End")) == NULL ) return LastStatus = HS_LOADDLL_ERROR;