为什么有的dll里面的函数用LoadLibrary()不行

lhg3122 2004-08-11 06:57:14
我做了一个动态库文件,为什么用LoadLibrary()调用其中的函数时出现错误
如下调用
HINSTANCE hDLL = NULL;
FARPROC lpFarProc;
void _stdcall(*DLLFunc)(TADOConnection*,AnsiString);
hDLL = LoadLibrary("Output.dll");
if (hDLL==NULL)
{
FreeLibrary(hDLL);
hDLL = NULL;
return ;
}
//Show_Output_Report(TADOConnection* ado,AnsiString str)为动态库Output.dll里面一函数
(FARPROC &)DLLFunc = GetProcAddress(hDLL,"Show_Output_Report");
DLLFunc(ADOConnection1,"11");
...全文
125 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jishiping 2005-08-20
  • 打赏
  • 举报
回复
用 Borland 的工具 implib.exe 生成 DLL 的输出函数列表,看看DLL里面有哪些函数吧。比如:
implib Output.txt Output.dll
这样你打开 Output.txt,就可以看到DLL里面有哪些函数了。你的问题,有很多可能,最常见的就是使用C++输出或者输出函数没有使用__stdcall。解决办法就是在输出函数中前添加
extern "C" 以及 __stdcall 就可以了。
Joe 2005-08-20
  • 打赏
  • 举报
回复
HINSTANCE hModule = NULL;
typedef void (_stdcall *DLLFunc)(TADOConnection*,AnsiString);
hModule = LoadLibrary("Output.dll");
if (NULL != hModule)
{
DLLFunc pFnDLLFunc = (DLLFunc)GetProcAddress(hModule, "Show_Output_Report");
if (NULL != pFnDLLFunc)
{
pFnDLLFunc(ADOConnection1, "11");
}
FreeLibrary(hDLL);
}
周江涛 2005-08-20
  • 打赏
  • 举报
回复
DLLFunc = (FARPROC *)GetProcAddress(hDLL,"Show_Output_Report");
DLLFunc(ADOConnection1,"11");

602

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧