多线程调用DLL

liqinqiu 2008-01-14 11:17:18
主程序里调用DLL是可以成功的,
但是线程中就不成功,DLL是用DEIPHI写的一个FTP下载的东东,里面就一个函数.
请问哪位大哥知道解决办法?
...全文
377 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
relunana 2011-08-18
  • 打赏
  • 举报
回复
要保证你传入的值一直有效:
Ftp_down_file1(char *ip,char*port,char *user,char*passwd,char*RfileName,char*LfileNa)

不然Down_file()内部要Copy.
孤魂游梦 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]
隐式连接?显示连接?
[/Quote]

隐式或显示有什么不同吗?
liqinqiu 2008-01-15
  • 打赏
  • 举报
回复
DLL里面没写这些东西,前面在另一个线程里使用也没出问题.
现在好像是主从线程里都使用了LoadLibrary()这个DLL,
int Ftp_down_file1(char *ip,char*port,char *user,char*passwd,char*RfileName,char*LfileName)
{
BOOL result= true;
HINSTANCE hftpLibrary1=NULL;
typedef BOOL (CALLBACK * _BDZDY)(char *,char *,char *,char *,char *,char *);
if (NULL==hftpLibrary1)
hftpLibrary1=LoadLibrary("ftp.dll");
if (NULL==hftpLibrary1)
{
// FreeLibrary(hftpLibrary);
return false;
}
_BDZDY bdz1;
bdz1=(_BDZDY)GetProcAddress(hftpLibrary,"Down_file");
result=bdz1(ip,port,user,passwd,RfileName,LfileName);
return result;
}
运行到hftpLibrary1=LoadLibrary("ftp.dll");时就出现了
First-chance exception in MultiCLI.exe: 0xC0000005: Access Violation这样的提示,
但hftpLibrary1确实是取到了值,运行到result=bdz1(ip,port,user,passwd,RfileName,LfileName);
的时候就出错,有时可以下载,有时下载失败弹出The thread 0x9F0 has exited with code 255 (0xFF).
这样的对话框.
lifejoy 2008-01-14
  • 打赏
  • 举报
回复
请在DLL的开发中设置,THREAD_ENTER的时候做一些控制防治多线程访问,DELPHI默认产生的是在Application中就是被附加在主线程中的东西
ouyh12345 2008-01-14
  • 打赏
  • 举报
回复
隐式连接?显示连接?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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