请教高手:为什么我的动态库不能在线程中使用?

Z20051010 2005-11-16 01:14:27
现在和第三方合作,对方提供的动态库我在我开启的一个线程中不能调用,
而不在线程中调用却能正确工作,
请问:这是什么原因造成的?我感到很莫名其妙,第一次遇到这种问题,高手指点原因
事关责任问题,希望大侠能指教小弟

对了,动态库我是静态加载的
即#progama comment(lib ,"test.dll");

大致代码如下:


CMyDlg::Test()//对话框的一个测试Button对应的代码
{
char szfile[] = "d:\\teslt.txt";
dectall(szfile); // d动态库调用,这里可以调用成功
CWinThread * pThreadd = AfxBeginThread{(MyFun, (LPVOID)this);
}

UINT MyFun(LPVOID)
{
char szfile[] = "d:\\teslt.txt";
dectall(szfile); // d动态库调用,这里调用出异常
}
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Z20051010 2005-11-16
  • 打赏
  • 举报
回复
我以前都是这么用的,也没有出现问题,只是最近发过来的动态库突然不能这样用了,所以我怀疑是什么地方出了问题,
动态库的对外接口都是全局的啊,线程中为何不能用?

实际中,我也不尽是在线程中用的,我的实际调用顺序是这样的:
类中的成员函数调用线程的函数,线程函数然后又调用该类的其中一个成员函数,在这个成员函数中对该动态库的导出函数进行了调用。

goodboyws 2005-11-16
  • 打赏
  • 举报
回复
是不是和Com相关,要加
CoInitialize(NULL);
Jarrylogin 2005-11-16
  • 打赏
  • 举报
回复
你可以这样,在进程中加载DLL,把DLL的函数指针传入线程中调用。
我没有见过你的用法,gZ
Kudeet 2005-11-16
  • 打赏
  • 举报
回复
是不是需要初始化什么东西

15,471

社区成员

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

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