FreeLibrary就出错,请问错在哪里,谢谢

仗剑骑驴 2011-01-20 07:58:51
typedef LONG (__stdcall * TESTFUN)(LPCTSTR , LPCTSTR );
void test()
{
HMODULE hdll = LoadLibrary("mydll.dll");
if (hdll==NULL)
{
AfxMessageBox("LoadLibrary error");
return ;
}
TESTFUN testfun=(TESTFUN)GetProcAddress(hdll,"testfun");
if(testfun== NULL)
{
AfxMessageBox("GetProcAddress error");
return ;
}
LONG rets=testfun("a1","a2");
FreeLibrary(hdll);//这里一执行就出错,去掉就一切OK,请问这是哪里写错,谢谢。。。
}
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
仗剑骑驴 2011-01-25
  • 打赏
  • 举报
回复
晕,,还非得找个人给分的=_=!!,那就给三楼吧,至少给出了一些判断的方法。。。
仗剑骑驴 2011-01-25
  • 打赏
  • 举报
回复
没人回答,那就结贴了,不知道问题出在哪了。。不过今天那段代码重新编译又不崩了,,也不知道是我系统有问题还是VC6有问题,又跑到其他地方出问题了,,哎。。真是搞死个人,,怎么电脑也跟人似的,编译还得看心情,,没改动过的代码,居然不是每次编译都相同,,
kingstarer 2011-01-21
  • 打赏
  • 举报
回复
// LONG rets=testfun("a1","a2");

注释掉这一行再跑看看 如果这行注释后仍然有问题 那可能是你的dll全局变量析构有问题

换一个dll试试

如果注释掉后没问题那你就重点看testfun有没有问题了
仗剑骑驴 2011-01-21
  • 打赏
  • 举报
回复
差不多,不过不知道DELPHI的ShareMem是什么,,这贴子只在最后说问题解决了,没说怎么解决。。。=_=!!
arong1234 2011-01-21
  • 打赏
  • 举报
回复
出错能说明什么?你还没说什么错呢!一般情况下,在出错时你需要debug才可能知道原因,你这里代码没有任何问题,问题在于dll内部到底怎么了是从这看不出的
kingstarer 2011-01-21
  • 打赏
  • 举报
回复
testfun是不是有什么越界行为 还是一样 采用注释方法 定位问题

看看注释里面哪些代码后问题就不会产生
仗剑骑驴 2011-01-21
  • 打赏
  • 举报
回复
注释掉没问题,,但是同一个DLL,发到别人那里测试,一样的写法却正常,,在我机器上,好像testfun取完参数后产生了堆栈不平衡,如果把free去掉,后面加其他的函数,又能正常往下执行
mstlq 2011-01-20
  • 打赏
  • 举报
回复

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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